我想设置我的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,我可以看到没有传入流量.我做了一些谷歌搜索,但没有发现任何特别有用的东西.我还确认我的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隧道.我觉得设置很容易(个人意见在这里!);-)但是……你需要在你的localhost上建立一个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