我有一个 Windows Server 2012 R2 安装,带有 Hyper-V、RRAS 和 NAT 设置。
我的两个虚拟机和 RRAS NAT 有问题:
本质上,这两个 VM 不会在本地子网之外进行通信。他们可以与本地网络中的所有东西(其他虚拟机、网关)进行通信,但不能与本地网络之外的东西通信。这两个和其他 VM 之间的唯一区别是它们是基于 Linux 的系统。所有其他 VM 都是基于 Windows Server 2012 R2 的系统。
是否有特定于 Linux 的东西会导致此问题?一个是 CentOS 安装,另一个是 Debian 安装。
如果我为任何一个 linux 盒子分配了一个面向公众的接口,那么它们就有了外部连接。显然我不想这样做,因为它浪费了我的 IP 寻址空间。
请注意:服务器可以 ping 默认网关(10.0.0.1)就好了。时间通常在 0.450ms 左右。
现在,我只想解决 debian 安装的问题,所以这里有一些数据:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:15:5d:91:82:07
inet addr:10.0.4.0 Bcast:10.0.255.255 Mask:255.255.0.0
inet6 addr: fe80::215:5dff:fe91:8207/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1842 errors:0 dropped:0 overruns:0 frame:0
TX packets:7245 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:119697 (116.7 KiB) TX bytes:701216 (684.7KiB)
(不包括环回)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
localness * 255.255.0.0 U 0 0 0 eth0
# ip route
default via 10.0.0.1 dev eth0
10.0.0.0/16 dev eth0 proto kernel scope link src 10.0.4.0
该/etc/network/interfaces
文件如下:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 10.0.4.0
netmask 255.255.0.0
network 10.0.0.0
broadcast 10.0.255.255
gateway 10.0.0.1
更多信息:
# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target port opt source destination
Chain INPUT (policy ACCEPT)
target port opt source destination
Chain OUTPUT (policy ACCEPT)
target port opt source destination
网络基本设置如下:Hyper-V Windows Server 有一个网络端口,插入互联网。然后主机安装了 RRAS 和 NAT,并使用我的整个公共 IP 空间为 VM 转换 NAT。每个虚拟机/24
从该范围内获得不同的 IP 地址块10.0.0.0/16
,但它们保留/16
子网掩码。例如,Debian VM 是10.0.4.0 - 10.0.4.255
.