我有一个 linux box,它有两个网络接口,eth0,eth1。从 eth1 我可以访问内部网站,比如在端口 8080 下。从盒子外面,我无法访问该网络。我的问题是,有没有办法从盒子外面设置一些东西,似乎有一个 web 服务器在端口 8080 中运行,当我连接到它时,它会自动转发到 eht1 内部站点?我尝试启用 ip forward 并添加静态路由,但它不起作用。谢谢。
这个盒子是否在这些接口之间路由流量?根据你写的内容,我假设 eth0 上有一个连接到 Internet 的公共网络,而 eth1 上有一个私有本地网络。
如果这就是设置并且您想从 Internet 访问本地网络上的网络服务器,则必须使用网络地址转换 (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
Run Code Online (Sandbox Code Playgroud)
XXXX 是外部地址,而 YYYY 是运行网络服务器的内部地址。在这种情况下,您还必须确保允许前向链中的流量:
iptables -A FORWARD -p tcp -d Y.Y.Y.Y --dport 8080 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
您的盒子必须为此启用转发:
sysctl net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)
或者
echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)
不确定这是否能回答您的问题,但在您的问题中提供的细节很少。