标签: port-forwarding

IPtables:DNAT 不工作

在我拥有的 CentOS 服务器中,我想将端口 8080 转发到第三方网络服务器。
所以我添加了这个规则:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination thirdparty_server_ip:80
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。
为了调试这个过程,我添加了这两条 LOG 规则:

iptables -t mangle -A PREROUTING -p tcp --src my_laptop_ip --dport ! 22 -j LOG --log-level warning --log-prefix "[_REQUEST_COMING_FROM_CLIENT_] "
iptables -t nat -A POSTROUTING -p tcp --dst thirdparty_server_ip  -j LOG --log-level warning --log-prefix "[_REQUEST_BEING_FORWARDED_] "
Run Code Online (Sandbox Code Playgroud)

(这--dport ! 22部分只是为了过滤掉 SSH 流量,以免我的日志文件被淹没)

根据此页面mangle/PREROUTING链是第一个处理传入数据包的nat/POSTROUTING链,而链是最后一个处理传出数据包的链。

并且由于nat/PREROUTING链位于其他两个的中间,因此三个规则应该这样做:

  1. 规则mangle/PREROUTING记录传入的数据包
  2. 中的规则nat/PREROUTING …

linux firewall iptables port-forwarding

2
推荐指数
1
解决办法
1万
查看次数

别名端口/端口转发到另一个本地端口

我在 EC2 中使用 Amazon Linux AMI。

以前,它们允许我在 AWS Web 控制台(在安全组中)从内部端口输入不同的外部端口。现在他们只允许内部和外部端口使用相同的端口。

我需要有相同的守护进程才能从端口 80 和 8000 可见。守护进程现在在端口 80 上运行。

如何在同一实例中将端口 8000 转发到 80?

我正在使用免费使用层(带有 Amazon Linux AMI 的微型实例)

linux iptables port-forwarding amazon-ec2 amazon-web-services

2
推荐指数
1
解决办法
4970
查看次数

如何通过另一台机器配置从内部机器到互联网的路由?

我有一台内部机器,比如连接到机器的 X(未连接到互联网),比如连接到互联网的 Y。

我应该如何配置机器才能从内部机器 X 通过 Y 路由到互联网?

iptables port-forwarding

2
推荐指数
1
解决办法
466
查看次数

Cisco ASA 8.4 端口转发

我在 Cisco ASA 上从 Internet 上的主机到内部网络上的主机进行端口转发时遇到问题。ASA 的外部接口通过 DHCP 分配。为了使这项工作正常工作,还需要做些什么吗?

更新问题

(outside) to (outside) source dynamic VPN_NETWORK interface
Run Code Online (Sandbox Code Playgroud)

每:

https://www.cisco.com/en/US/docs/security/asa/asa84/configuration/guide/nat_rules.html

(outside) to (outside) after-auto source dynamic VPN_NETWORK interface
Run Code Online (Sandbox Code Playgroud)

数据包跟踪器:

# packet-tracer input outside tcp 74.x.x.x 1025 71.x.x.x 555

Phase: 1
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in   71.x.x.x    255.255.255.255 identity

Phase: 2
Type: ACCESS-LIST
Subtype:
Result: DROP
Config:
Implicit Rule
Additional Information:

Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: NP Identity Ifc
output-status: up
output-line-status: up
Action: …
Run Code Online (Sandbox Code Playgroud)

cisco nat port-forwarding access-control-list cisco-asa

2
推荐指数
1
解决办法
6047
查看次数

如何使用 Linux HA 为我的公共 IP 地址执行 IP 故障转移

我做了很多实验的heartbeatcorosync以及pacemakerIP FailOver我有做的Public IP。我用两个节点做了不止一个 ip 故障转移(VIP),还有三个节点,但使用Private IP(s)作为 VIP。

我使用 vbox 虚拟机尝试了这个,就我使用私有 IP 地址而言,一切都很好,但是当我开始考虑为公共 IP 故障转移(我从 ISP 分配)时,我被卡住了,困惑地质疑自己。

我在 LAN 中有一些机器在启用了 DHCP 的家用路由器的帮助下互连。我无法进一步思考如何为分配给我的公共 IP 进行故障转移。

我的问题是,

如何对分配给我的公共 IP 地址执行相同的故障转移?多一台路由器?如果是,如何?

任何帮助是极大的赞赏。谢谢!

更新

与我的路由器相关:

  • 好的,需要两个路由器,如何知道/购买路由器是否支持集群?
  • 我真的需要两个 ISP(公共 ip)链接来故障转移单个公共 ip 吗?。
  • 毕竟,我想我应该Port Forwarding在路由器上做一个到 VIP(私有 ip)的路由器,我已经在服务器上使用心跳配置了故障转移。我应该如何继续获得另一个 VIP?是在另一个路由器上吗?

router failover ip port-forwarding ubuntu-10.04

2
推荐指数
1
解决办法
2381
查看次数

转发端口

我有一台可以通过 SSH 访问Server1的本地机器。Server1可以访问Server2,Tomcat 在端口 5050 上运行。如何在浏览器中的本地计算机上的端口 5050 上连接到该 Tomcat?

ubuntu ssh port-forwarding ssh-tunnel

2
推荐指数
1
解决办法
171
查看次数

配置 nginx 将外部端口转发到同一内部端口

我正在运行 TileMill,它正在从本地主机监听端口 20008 和 20009。我希望 20009 只能通过端口 80 上的 nginx 访问(使用简单的身份验证)。我希望 20008 可以从外部“直接”访问。

server {
   listen 80;
   server_name localhost;
   location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:20009;
        auth_basic "Restricted";
        auth_basic_user_file htpasswd;
    }
}
server {
   listen 20008;
   server_name localhost;
   location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:20008;
    }
}
Run Code Online (Sandbox Code Playgroud)

明显的问题是 nginx 无法侦听端口 20008 - 它已被 TileMill 使用。

Restarting nginx: nginx: [emerg] bind() to 0.0.0.0:20008 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:20008 failed (98: Address already in …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy port-forwarding

2
推荐指数
1
解决办法
4031
查看次数

Unix Shell/SSH 配置允许 TCP 端口转发而不显示命令提示符

我正在运行 Debian Linux。我想有一个能够通过SSH连接的TCP转发的用户帐户,无提示的命令。

例如以下将工作(从远程计算机):

ssh -D1234 user@myhost
Run Code Online (Sandbox Code Playgroud)

但不会出现命令提示符。

使用像 /bin/false 或 /sbin/nologin 这样的 shell 限制太多,因为它甚至不允许用户登录。只允许“exit”或 Ctrl+D 命令的 shell 可以完成这项工作。

我知道类似的东西可能只允许 SFTP,但我找不到 TCP 转发的等价物。

谢谢

linux debian ssh port-forwarding

2
推荐指数
1
解决办法
2061
查看次数

在 docker 中使用 iptables 端口重定向

我有一台运行 Jenkins(端口 8080 上的 HTTP)的 Linux 服务器,并且同一台服务器也在运行 Docker 1.12.1。我使用了一些 iptables 规则(根据 Jenkins 官方安装文档)将端口 8080 重定向到主机的端口 80,这样默认 HTTP 将适用于 Jenkins(即http://myserver而不是http://myserver:8080):

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)

然而,这些规则破坏了 Docker 在docker build命令期间通过 HTTP 下载正确资源的能力。例如,RUN apt-get update由于多个“无法下载”错误而失败。这样做wget http://www.google.com的容器内返回该詹金斯主要页面的HTML。来自主机的 HTTP GET 工作正常。删除 iptables 规则会导致RUN apt-get update再次工作。所以我认为那些 iptables 规则正在干扰 docker 的网络机制。

这样的端口重定向可以和Docker共存吗?如果是这样,如何编写 …

iptables port-forwarding redirection jenkins docker

2
推荐指数
1
解决办法
5780
查看次数

如何仅在单个主机 IP 地址上进行端口转发

简短的问题:

如何仅在单个主机 IP 地址上启用端口转发?

背景故事:

我的 Centos 7 服务器有 5 个 IP 地址。以前,我让 apache 监听所有这些,以及分配给那些用虚拟主机解析的 ip 地址的各种域。

我更改了Listenhttpd.conf 中的指令,以便现在 apache 只侦听 4 个 IP 地址

使用 node.js 我创建了另一个服务器实例,但它不会让我在没有提升权限的情况下监听标准端口 80。我不想以提升的权限运行它。

我想将端口 80 转发到 8080 之类的端口,但仅在一个 ip 地址上,而不会影响指向其他 4 个 ip 地址的流量。重要的是,其他 IP 地址上的流量不受该规则的影响。

我认为解决方案将类似于:

firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
Run Code Online (Sandbox Code Playgroud)

我发现的其他问题和答案与源 ip 地址而不是主机 ip 地址有关。

port-forwarding centos7 firewall-cmd

2
推荐指数
1
解决办法
1万
查看次数