use*_*245 5 lamp firewall port-forwarding nat virtualbox-networking
我目前按以下方式设置了两个 VM:
/-----------------------\
/-----------------\ | Ubuntu VM | /---------------\
| Workstation |------| eth1 : 192.168.0.x | | Web Server |
| 192.168.0.x | | eth0 : 169.254.71.x |------| 169.254.71.x |
\-----------------/ | | \---------------/
\-----------------------/
Run Code Online (Sandbox Code Playgroud)
我在从本地机器访问 Web 服务器时遇到了一些问题。
ubuntu通过virtualbox配置有2个网卡,第一个设置为内部网络,第二个设置为桥接连接。这给了我一次在 vm 内的两个有线连接,我将第一个(对应于内部网络)设置为“仅本地链接”,第二个设置为自动 DHCP。
网络服务器正在运行交钥匙 linux LAMP os,网络适配器配置为内部网络,网络与 ubuntu 内部网络具有相同的名称。
我已经按照本教程(在适当的情况下切换 eth0 和 eth1)使我能够从网络服务器 ping 到外部世界。我可以从网络服务器 ping 到我的本地机器和互联网上的任何网站。
现在我的问题来自试图做上述相反的事情。我一直在努力都无济于事相当长的一段时间,利用资源的开发,如这和一对夫妇别人,使我从我的本地机器连接到网络服务器。当我尝试 ping 网络服务器的 169.254.71.x 地址时,它无法连接。
我意识到我的问题可能出在 ubuntu 机器上的 NAT 配置中,或者我的 ubuntu 机器上的端口转发配置中,但我不知道如何解决这些问题。
所以我最终解决了我的问题,只是为其他可能遇到问题的人发布了答案。
命令:
iptables -t nat -A PREROUTING -d outerip -p tcp --dport 80 -j DNAT --to webip
Run Code Online (Sandbox Code Playgroud)
最终让它发挥作用。此规则附加预路由表,以允许来自防火墙外部 ip 的连接(只要它们是发往端口 80 的 tcp 数据包)穿过防火墙直接 NAT 到 Web 服务器 IP。
还应该注意的是,我将防火墙的面向内部的适配器从“仅链接本地”更改为“与其他计算机共享”,这为该 eth 适配器分配了地址 10.42.0.x,而不是 169.254.xx不确定这是否修复了任何功能,另一位用户建议我离开 169.254.xx 地址字段。