我有一个面向LAN的地址为192.168.5.100 (eth0),另一个面向LAN的地址为192.168.6.6 (eth1)的服务器。
在这个服务器上,我有一个Fedora的Virtualbox实例,运行一个Apache webserver(在端口8080上),在主机服务器上有一个桥接接口eth1,地址为192.168.6.7
192.168.6.xnetworking上的用户可以毫无问题地访问Vbox实例(192.168.6.7)上的Web服务器。
我的问题是应该制定/执行什么types的iptables条目或命令,以便允许192.168.5.xnetworking上的用户访问vbox实例上的networking服务器。 (我希望他们的url可以是这样的: http : //192.168.5.100 : 8080 )
在这种情况下只有几个选项:1)允许192.168.5.xnetworking上的主机直接路由到192.168.6.xnetworking。 (即通过中间主机192.168.5.100到您的networking的路由,并在内核中启用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
对我来说,以下工作:
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。 其他的答案没有提到的是伪装,这在我的理解中是不需要正确地得到答案的。
这应该将端口8080上的端口8080上的请求转发到端口8080上的端口eth1上的192.168.6.7。
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 --to-destination 192.168.6.7:8080 -j DNAT