我目前正在 unbuntu 14.04 主机上设置带有 kvm/qemu 的客户 Windows 服务器,并采用桥接网络连接,以允许服务器通过互联网公开。
我正在尝试为我的 Windows 服务器提供与 Linux 主机服务器相同的 IP,该 IP 是服务器的外部 IP 地址。
我对此还很陌生,因此我在 Ubuntu 14.04 上使用此命令设置了我的网桥
virsh iface-bridge eth0 br0
我当前创建的桥接器如下(编辑外部服务器ip,用字母替换)。
br0 Link encap:Ethernet HWaddr 38:60:77:26:4a:b3
inet addr:aaa.bb.ccc.137 Bcast:aaa.bb.ccc.255 Mask:255.255.255.0
inet6 addr: aaaa:bbbb:8:e89::1/128 Scope:Global
inet6 addr: aaaa::bbbb:cccc:fe26:4ab3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1607000 errors:0 dropped:42 overruns:0 frame:0
TX packets:1458574 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3860135693 (3.8 GB) TX bytes:164453268 (164.4 MB)
eth0 Link encap:Ethernet HWaddr 38:60:77:26:4a:b3
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5629010 errors:0 dropped:0 overruns:0 frame:0
TX packets:2998492 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8133304283 (8.1 GB) TX bytes:446483217 (446.4 MB)
Interrupt:20 Memory:fe500000-fe520000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:50169 errors:0 dropped:0 overruns:0 frame:0
TX packets:50169 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12576653 (12.5 MB) TX bytes:12576653 (12.5 MB)
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:402 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:67355 (67.3 KB) TX bytes:50853 (50.8 KB)
这是使用上述命令创建的 /etc/network/interfaces。
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address aaa.bb.ccc.137
netmask 255.255.255.0
gateway aaa.bb.ccc.254
bridge_ports eth0
bridge_stp on
bridge_fd 0
iface br0 inet6 static
address aaaa:bbbb:8:E89::1
netmask 128
这是我的 brctl show,显示我的客人正在被添加到我使用 virt-manager 为我的客人分配的桥接器中。vnet0 是我的客人。
root@ns388356:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.386077264ab3 yes eth0
vnet0
virbr0 8000.000000000000 yes
现在我通过正确安装在客户操作系统上的 virtio 驱动程序访问此 nic。
我在客户机上什么都得不到,我是不是错过了什么重要信息?我也有 ipv6 地址,是否可以只将其用于客户机操作系统?
更新:
最后,我最终保留了默认的 nat 网络接口,然后仅使用 iptables 将特定端口上的外部连接转发到内部等效端口。没有什么特别的,而且我对它如此简单感到很尴尬。
这是我使用的命令。
iptables -t nat -A PREROUTING -p tcp -d (external ip) --dport 3389 -j DNAT --to-destination 192.168.122.202:3389
这将规则添加到防火墙
iptables -t nat -D PREROUTING -p tcp -d (external ip) --dport 3389 -j DNAT --to-destination 192.168.122.202=:3389
如果需要的话,这将删除它(dhcp 分配新的内部 ip)
然后我只是刷新 iptables
iptables --flush
现在需要保存这些内容,因为重启时它们会丢失。
答案1
您不能赋予两台机器相同的 IP 地址并期望它们能够正常工作。
为 Windows 客户机提供不同的 IP 地址。