Linux:如何在不同网络上的2台主机之间使用iptables进行端口转发?

前端之家收集整理的这篇文章主要介绍了Linux:如何在不同网络上的2台主机之间使用iptables进行端口转发?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我几乎绝望了…我已经阅读了大约2天iptables转发示例,我不能做一个简单的端口转发.我在不同的网络上有2台机器. server1(S1和ip 195.21.2.41)在我家,server2(s2与ip 10.234.141.126)在Amazon EC2.

我需要将转发到s2的所有流量转发到s1.我试过这个:

刷新所有规则,激活内核参数转发,添加postrouting和prerouting规则

  1. iptables -F -t nat
  2. iptables -F
  3. echo 1 > /proc/sys/net/ipv4/ip_forward
  4. iptables -t nat -A POSTROUTING -d 195.21.2.41 -j MASQUERADE
  5. iptables -t nat -A PREROUTING -i eth0 -d 10.234.141.126 -p tcp --dport 80 -j DNAT --to 195.21.2.41

我可选择添加

  1. iptables -A FORWARD -p tcp -i eth0 -d 195.21.2.41 --dport 80 -j ACCEPT

然后我尝试:

  1. telnet 10.234.141.126 80

但没有奏效.为什么这不起作用?

更新:看看一些测试:

  1. [root@ip-10-234-141-216 ~]# telnet 195.21.2.41 80
  2. Trying 195.21.2.41...
  3. Connected to 195.21.2.41.
  4. Escape character is '^]'.
  5. [root@ip-10-234-141-216 ~]# iptables -F -t nat
  6. [root@ip-10-234-141-216 ~]# iptables -F
  7. [root@ip-10-234-141-216 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
  8. [root@ip-10-234-141-216 ~]# /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.234.141.126 --dport 80 -j DNAT --to-destination 195.21.2.41
  9. [root@ip-10-234-141-226 ~]# /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
  10. [root@ip-10-234-141-216 ~]# /sbin/iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
  11. [root@ip-10-234-141-216 ~]#
  12. [root@ip-10-234-141-216 ~]# telnet 10.234.141.126 80
  13. Trying 10.234.141.126...
  14. telnet: connect to address 10.234.141.126: Connection refused

更新2路输出

  1. [root@ip-10-234-141-216 ~]# route -n
  2. Kernel IP routing table
  3. Destination Gateway Genmask Flags Metric Ref Use Iface
  4. 10.234.141.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0
  5. 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
  6. 0.0.0.0 10.234.141.1 0.0.0.0 UG 0 0 0 eth0

解决方法

如果您只需要将所有传入流量重定向到转发到另一台机器的指定端口,请尝试使用rinetd而不是iptables.这是一个流量重定向服务器.

猜你在找的Linux相关文章