我有一台 IP 为 1.0.0.5/24 的服务器。这是服务器的主 IP 地址,现在我还有另外两个服务器 IP 地址,分别是 1.0.2.30/24 和 1.0.2.31/24。我想让运行另一个操作系统的 VirtualBox 可通过互联网访问,并且只允许指定的 IP 访问该虚拟盒。
我是 iptables 的新手,因此我需要一些有关此的基本帮助和入门信息。
托管服务提供商不允许每个交换机端口有多个 MAC 地址,这意味着据我所知我无法建立桥接。
此外,我希望主机拒绝额外的 IP,因此只有 VirtualBox/虚拟机才能接受额外 IPS 上的请求。
答案1
我还没有测试过,但我会尝试一下。
使用以下命令在主机上创建新网桥
brctl
brctl addbr br0
使用以下配置虚拟机桥接网络连接到这座桥
为网桥分配一个私有子网,并为主机分配一个 IP
ip addr add 192.168.1.1/24 dev br0 ip route add 192.168.1.0/24 dev br0
要么静态地为虚拟机配置一个该范围内的 IP(例如 192.168.1.2),要么在主机上设置 DHCP 服务器(例如域名系统或 VirtualBox 的DHCP服务器)。
- 检查主机是否可以通过私有 IP 访问虚拟机,反之亦然
将静态 IP 附加到主机上的 eth0
ip addr add 1.0.2.30/24 dev eth0
检查是否可以从外部连接到附加 IP 上的主机
在主机上启用 IP 转发
echo 1 > /proc/sys/net/ipv4/ip_forward
配置 iptables 以对来自 VM 的传出数据包进行 SNAT
iptables --table nat --append POSTROUTING --source 192.168.1.0/24 --jump SNAT --to 1.0.2.30 iptables --append FORWARD --source 192.168.1.0/24 --jump ACCEPT
检查虚拟机是否已连接到 Internet
配置 iptables 以将数据包 DNAT 到虚拟机的附加 IP
iptables --table nat --append PREROUTING --destination 1.0.2.30 --to-destination 192.168.1.2 iptables --append FORWARD --destination 192.168.1.2 --jump ACCEPT
检查是否可以从外部连接到附加 IP 上的虚拟机