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

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

我的 Linux 机器有两个网络接口,eth0 和 eth1。我可以从 eth1 访问内部网站,比如端口 8080。但在机器外部,我无法访问该网络。我的问题是,有没有办法设置一些东西,这样在机器外部,似乎有一个 Web 服务器在端口 8080 中运行,当我连接到它时,它会自动转发到 eht1 内部站点?我尝试启用 ip 转发并添加静态路由,但它不起作用。谢谢。

答案1

这个盒子是否在这些接口之间路由流量?根据您所写的内容,我假设 eth0 上有一个连接到互联网的公共网络,而 eth1 上有一个私有本地网络。

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

基本上,您需要在“外部”接口上确定一个外部 IP 地址并添加 iptables 规则:

iptables -t nat -A PREROUTING -p tcp -d X.X.X.X --dport 8080 -j DNAT --to Y.Y.Y.Y:8080

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

iptables -A FORWARD -p tcp -d Y.Y.Y.Y --dport 8080 -j ACCEPT

你的盒子必须启用转发功能才能实现此目的:

sysctl net.ipv4.ip_forward=1 

或者

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

不确定这是否回答了您的问题,但是在您的问题中提供的详情很少。

相关内容