Linux
將 Web 請求轉發到另一台電腦
我有一台筆記本和兩台伺服器:
- 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.3
到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 }
重啟
xinetd
:service xinetd restart
現在,
http://172.17.0.3
應該將您重定向到http://172.17.0.2
這裡不需要
iptables
了。