我知道几年前这可以使用命令:
iptables -A OUTPUT -t nat --dport ${LOCAL UNPRIV PORT} \ -j DNAT ${ANOTHER SYstem}:${REMOTE PORT}
但是根据我的阅读,看起来该功能已被删除,我在/ var / log / messages中收到了消息
kernel: NAT: no longer support implicit source local NAT
我发现资源表明从内核2.6.X – 2.6.10,有一种方法可以在内核中使用IP_NF_NAT_LOCAL启用它,但显然在更新的内核中它已被删除.我已经尝试转发所有本地流量,因此它将进入PREROUTING链,并且取得了有限的成功,这只是一个坏主意,因为那时我必须打开服务器上的非特权端口,以便我可以将其反馈到eth0接口.我确信我有更多时间可以找到某种奇怪的kludge或解决方法,但我宁愿不要那么多地破解我的防火墙脚本.似乎必须有一个更简单的方法来做到这一点,我没有看到.社区可以提供的任何帮助或指导都会非常有帮助!提前致谢
解决方法 我不完全确定我是否理解,但我认为你只是在错误的链条中. :-)当我第一次使用iptables时,我也很困惑.但转发本地端口${LOCAL UNPRIV PORT}的方法如下:$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport ${LOCAL UNPRIV PORT} -j DNAT --to ${ANOTHER SYstem}:${REMOTE PORT}
它是语义问题和netfilter工作方式的混合:在过去,转发本地端口涉及到转发的盒子的连接,以及到目的地的第二个连接. Iptables一步到位.因此,而不是两个连接 – 您将流量转发到该端口直接到达目的地. Netfilter执行所有健全性检查和簿记:只有属于有效连接的数据包才会被NAT,因此可以转发.
启用DNAT不允许转发任何数据包.您还必须添加规则:
$IPT -N INET-PRIV$IPT -A FORWARD -i eth0 -o eth1 -j INET-PRIV$IPT -A FORWARD -j DROP$IPT -A INET-PRIV -p tcp -d ${ANOTHER SYstem} --dport ${REMOTE PORT} -j ACCEPT$IPT -A INET-PRIV -j DROP
而且你必须启用转发.
echo "1" > /proc/sys/net/ipv4/ip_forward
Pro iptables:每个连接使用更安全,更灵活,更少的内存和cpu
Contra iptables:从内部机器转发连接到内部机器(将其反馈到eth0)对iptables没有意义(当然你总是可以直接连接),本地生成的转发流量不起作用(端口转发守护进程可能有所帮助 – 但通常没有意义)
确切地说,这可能是问题:您尝试在非路由器上使用NAT,因此您应该使用转发守护程序或完全跳过此额外端口转发并执行:
ssh -L 1234:${ANOTHER SYstem}:${REMOTE PORT} special-vpn-Box
在special-vpn-Box上,您只能使用iptables允许来自路由器和传出连接的传入连接到${ANOTHER SYstem}:${REMOTE PORT}.这样,special-vpn-Box的用户只能访问${ANOTHER SYstem}:${REMOTE PORT},如果不受信任,将无法执行任何其他 *** 作.
总结以上是内存溢出为你收集整理的linux – iptables将本地连接重定向到远程系统/端口全部内容,希望文章能够帮你解决linux – iptables将本地连接重定向到远程系统/端口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)