使用 IP 表进行端口转发

使用 IP 表进行端口转发

我有一台面向 LAN 的地址为192.168.5.100(eth0)和另一个面向 LAN 的地址192.168.6.6(eth1)。

在这台服务器上,我有一个 Fedora 的 Virtualbox 实例,运行着一个 Apache Web 服务器(在端口 8080 上),该服务器有一个桥接接口,连接到主机服务器上的 eth1,地址为192.168.6.7

192.168.6.x 网络上的用户可以毫无问题地访问 Vbox 实例 (192.168.6.7) 上的 Web 服务器。

我的问题是应该创建/执行什么样的 iptables 条目或命令,以允许 192.168.5.x 网络上的用户访问 vbox 实例上的 Web 服务器。(我希望他们的网址可以是这样的: http://192.168.5.100:8080

答案1

在这种情况下,只有几个选项:1)允许 192.168.5.x 网络上的主机直接路由到 192.168.6.x 网络。(即通过中间主机 192.168.5.100 和内核中启用的 ip 转发路由到您的网络。

2)将 8080 端口转发到正确的 IP 和端口(检查 balance-ng 并在 eth0 接口上运行它)

3)基于iptables的端口转发/nat

/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.167.5.100 --dport 8080 -j DNAT --to 192.168.6.7:80
/sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.6.7 --dport 80 -j ACCEPT

启用 IP 转发echo 1 > /proc/sys/net/ipv4/ip_forward

答案2

对我来说,以下方法有效:

sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sbin/iptables -t nat -A PREROUTING -p tcp -i eth0  --dport 80 -j DNAT --to 192.168.6.7:8080

在 ubuntu 10.04 主机上使用 virtualbox 3.2.12。其他答案没有提到的是伪装,在我看来,伪装对于正确获取答案包是必要的。

答案3

这会将接口 eth0 上端口 8080 上的请求转发到接口 eth1 上端口 8080 上的 192.168.6.7。

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 --to-destination 192.168.6.7:8080 -j DNAT

相关内容