转发networking请求到另一台计算机

我有一个笔记本和两台服务器:

  • ip = 172.17.0.2(我在这里安装了nginx)
  • IP = 172.17.0.3(这里没有什么,但我可以从这里ping 172.17.0.2)

我在笔记本上打开浏览器,打开

http://172.17.0.2 

并从Nginx获取网页。

现在我想要这样做,如果我打开

 http://172.17.0.3 

在浏览器中,这个服务器转发我的请求172.17.0.2并返回同一个页面。

我已经连接到172.17.0.3并进行了这样的改变:

 root@6d2de436eef0:/# sysctl net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1 root@6d2de436eef0:/# iptables -t nat -F PREROUTING root@6d2de436eef0:/# iptables -t nat -A PREROUTING -d 172.17.0.3 -j DNAT --to-destination 172.17.0.2 root@6d2de436eef0:/# iptables -F FORWARD root@6d2de436eef0:/# iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT root@6d2de436eef0:/# iptables -A FORWARD -m conntrack --ctstate NEW -d 172.17.0.2 -j ACCEPT root@6d2de436eef0:/# iptables -P FORWARD DROP 

现在我打开

 http://172.17.0.3, 

但什么也得不到。 为什么以及如何解决?

更新

这是172.17.0.3上的tcpdump的结果 – http://pastebin.com/47MRWqXy

更新2

对不起,我没有给你充分的信息。 两台服务器172.17.0.3和172.17.0.2都是docker容器。 这是主机上的ifconfig:

 $ ifconfig docker0 Link encap:Ethernet HWaddr fe:69:ac:53:70:53 inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::f0ee:53ff:feae:aa6c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:162525 errors:0 dropped:0 overruns:0 frame:0 TX packets:278054 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:10471915 (10.4 MB) TX bytes:436185034 (436.1 MB) eth0 Link encap:Ethernet HWaddr f0:de:f1:27:7a:e6 inet addr:172.20.0.136 Bcast:172.20.0.255 Mask:255.255.255.0 inet6 addr: fe80::f2de:f1ff:fe27:7ae6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16023892 errors:0 dropped:0 overruns:0 frame:0 TX packets:4007904 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8557520703 (8.5 GB) TX bytes:484890281 (484.8 MB) Interrupt:20 Память:f8500000-f8520000 eth1 Link encap:Ethernet HWaddr 82:ea:96:9d:48:88 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

将“ 172.17.0.3:80 ”转发到172.17.0.2:80可能是使用inetd服务器。

然后,您将可以将http://172.17.0.3redirect到http://172.17.0.2

在服务器172.17.0.3

 apt-get install xinetd 

编辑/etc/xinetd.conf并添加这样的东西:

 service my_redirector { type = UNLISTED disable = no socket_type = stream protocol = tcp user = root wait = no port = 80 redirect = 172.17.0.2 80 log_type = FILE /tmp/somefile.log } 

重新启动xinetdservice xinetd restart

现在, http://172.17.0.3应该redirect你在http://172.17.0.2

这里再也不需要iptables了。

如果两台服务器都在同一个networking中,则不能使用DNAT。

DNAT用于地址转换(又名防火墙),FORWARD在这种情况下是无用的,因为这个数据包不通过服务器2。

您需要一个http代理或负载平衡器。

另一个select是在apache中将一个简单的index.html设置到server2中,并使用redirect元标记。