我目前已按照以下方式设置了两个虚拟机:
/-----------------------\
/-----------------\ | Ubuntu VM | /---------------\
| Workstation |------| eth1 : 192.168.0.x | | Web Server |
| 192.168.0.x | | eth0 : 169.254.71.x |------| 169.254.71.x |
\-----------------/ | | \---------------/
\-----------------------/
我在从本地机器访问 Web 服务器时遇到了一些问题。
通过 virtualbox 配置 ubuntu 有 2 个网络适配器,第一个设置为内部网络,第二个设置为桥接连接。这样,在虚拟机内部就有了两个有线连接,我将第一个(对应于内部网络)设置为“仅本地链接”,将第二个设置为自动 DHCP。
该网络服务器运行的是交钥匙 Linux LAMP 操作系统,网络适配器配置为内部网络,网络名称与 ubuntu 内部网络相同。
我已经关注这教程(在适当的情况下切换 eth0 和 eth1)使我能够从 Web 服务器 ping 到外部世界。我可以从 Web 服务器 ping 到本地计算机和互联网上的任何网站。
现在我的问题来自于尝试做上述相反的事情。我已经尝试了很长时间,但毫无效果,使用了以下资源:这还有一些其他的,使我能够从本地计算机连接到 Web 服务器。当我尝试 ping Web 服务器的 169.254.71.x 地址时,它无法连接。
我意识到我的问题可能出在我的 ubuntu 机器上的 NAT 配置中,或者我的 ubuntu 机器上的端口转发配置中,但我不知道如何解决这些问题。
答案1
所以我最终解决了我的问题,只是为其他可能遇到此问题的人发布了一个答案。
命令:
iptables -t nat -A PREROUTING -d outerip -p tcp --dport 80 -j DNAT --to webip
最终让它得以运作。此规则附加了预路由表,以允许来自防火墙外部 IP 的连接(只要它们是发往端口 80 的 TCP 数据包)直接通过防火墙进行 NAT 到 Web 服务器 IP。
还应该注意的是,我将防火墙的内部适配器从“仅链接本地”更改为“与其他计算机共享”,这为该 eth 适配器分配了一个地址 10.42.0.x,而不是 169.254.xx 我不确定这是否修复了任何功能,另一个用户建议我删除 169.254.xx 地址字段。