如何在Linux下将连接从一个接口转发到另一个接口

我有Linux的箱子,它有两个networking接口,eth0,eth1。 从eth1我可以访问一个内部网站,说在端口8080.从箱子外面,我无法访问该networking。 我的问题是,有没有办法从盒子外面设置一些东西,似乎有一个web服务器运行在端口8080,当我连接到它,它会自动转发到eht1的内部网站? 我试图启用ip转发并添加一个静态路由,但它不起作用。 谢谢。

这个盒子是否在这些接口之间路由stream量? 从你写的我认为在eth0上有一个连接到Internet的公共networking,而在eth1上有一个私有的本地networking。

如果是这样的设置,你想从互联网访问本地networking上的networking服务器,你必须使用networking地址转换(NAT)。

基本上你需要在“外部”接口上指定外部IP地址并添加iptables规则:

iptables -t nat -A PREROUTING -p tcp -d XXXX --dport 8080 -j DNAT --to YYYY:8080 

XXXX是外部地址,而YYYY是运行Web服务器的内部地址。 在这种情况下,您还必须确保您允许前向链中的stream量:

 iptables -A FORWARD -p tcp -d YYYY --dport 8080 -j ACCEPT 

你的盒子必须为此启用转发:

 sysctl net.ipv4.ip_forward=1 

要么

 echo 1 > /proc/sys/net/ipv4/ip_forward 

不知道这是否回答你的问题,但给你的问题很less的细节。