Centos
如何使用 iptables 將本地主機流量轉發到遠端主機?
我想設置我的 CentOS 6.5 機器,將與 localhost (127.0.0.1) 的連接轉發到遠端機器上的同一埠(例如 10.0.3.10)。
我已經嘗試了下面的 iptables 規則,但是當我嘗試連接時,它只是掛起:
iptables -t nat -I OUTPUT --src 0/0 --dst 127.0.0.1 -p tcp --dport 8888 \ -j DNAT --to-destination=10.0.3.10:8888
在遠端機器上執行
tcpdump
,我可以看到沒有傳入流量。我做了一些Google搜尋,但沒有發現任何特別有用的東西。我還確認我的sysctl.conf
文件包含net.ipv4.ip_forward = 1
.編輯我添加了日誌記錄以響應以下評論之一。當我轉到 127.0.0.1:8888 時它不產生輸出,但在轉到 10.0.3.10 時確實產生輸出:
# Generated by iptables-save v1.4.7 on Tue Jul 29 12:52:17 2014 *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [11:1008] :OUTPUT ACCEPT [11:1008] :LOGGING - [0:0] -A OUTPUT -p tcp -m tcp -d 10.0.3.10 --dport 8888 -j LOGGING -A LOGGING -j LOG --log-prefix "IPTABLES: " -A LOGGING -j ACCEPT -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 8888 -j DNAT --to-destination 10.0.3.10:8 888 COMMIT # Completed on Tue Jul 29 12:52:17 2014 # Generated by iptables-save v1.4.7 on Tue Jul 29 12:52:17 2014 *filter :INPUT ACCEPT [50:2776] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [49:4336] COMMIT # Completed on Tue Jul 29 12:52:17 2014
我不知道如何在這台機器上配置 iptables 來做你想做的事。我通常在這種情況下使用 SSH 隧道。我發現設置起來很容易(個人意見在這裡!);-) 但是……你需要在你的本地主機上有一個 SSH 連接(它不需要從遠端訪問!)。
這種情況下的命令語法是:
ssh -f -C -N -L [<bind address>:]<local port>:<remote host name>:<remote service port> [-p <ssh port>] [<username>@]<remote host outside name>
所以對你來說,這意味著:
ssh -f -C -N -L 127.0.0.1:8888:10.0.3.10:8888 localhost