FreeBSD:向接口添加 ip 别名会破坏主 ip 上的网络

FreeBSD:向接口添加 ip 别名会破坏主 ip 上的网络

我正在尝试为我的 FreeBSD 机器上的网卡添加别名(我想使用监狱)。它运行版本 10.2-RELEASE-p7(通用 amd64 内核)。该机器在 Hyper-V 虚拟机中运行,但我在物理机器上也遇到了同样的情况,唯一的区别是运行相同 10.2 内核的 x86(32 位)版本。

网络接口 hn0 有一个静态 IP 地址:192.168.0.51/24,我的默认路由器是 192.168.0.1。一切正常,直到我添加别名:

ifconfig hn0 inet 192.168.0.200/32 alias

这将在 hn0 上创建别名,如 ifconfig 显示:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
    options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    inet 127.0.0.1 netmask 0xff000000
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
hn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=31b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4,TSO6>
    ether 00:15:5d:00:0f:00
    inet 192.168.0.51 netmask 0xffffff00 broadcast 192.168.0.255
    inet 192.168.0.200 netmask 0xffffffff broadcast 192.168.0.200
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

问题是,一旦我设置了别名,我就无法访问子网之外的任何主机(即使使用主机的 IP 地址)。例如谷歌域名服务器:

ping 8.8.8.8
ping 8.8.8.8 (8.8.8.8): 56 data bytes

但是,我可以使用别名作为源来 ping 任何内容:

ping -S 192.168.0.200 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.0.200: 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=56 time=11.137 ms
...

如果别名是在启动Jail时由Jail(8)创建的,则使用该别名的Jail具有网络访问权限,而主机则没有。删除别名后,我必须重新启动服务 netif 和路由才能重新获得主机主 IP 上的网络访问权限。

当监狱运行时,我可以通过 ssh 进入它,也可以使用 IP 别名 ping 它。

基于我无法使用外部节点的 IP ping 通外部节点的事实,我猜测路由有问题。名称解析不起作用,因为我的盒子无法访问 DNS 服务器。这是添加别名之前的 netstat -rn 输出:

Destination        Gateway            Flags      Netif Expire
default            192.168.0.1        UGS         hn0
127.0.0.1          link#1             UH          lo0
192.168.0.0/24     link#2             U           hn0
192.168.0.51       link#2             UHS         lo0

创建别名后:

Destination        Gateway            Flags      Netif Expire
default            192.168.0.1        UGS         hn0
127.0.0.1          link#1             UH          lo0
192.168.0.0/24     link#2             U           hn0
192.168.0.51       link#2             UHS         lo0
192.168.0.200      link#2             UHS         lo0
192.168.0.200/32   link#2             U           hn0

IPv6 值被省略,因为我通过添加禁用了 IPv6

ipv6_network_interfaces="none"
ipv6_activate_all_interfaces="NO"

到/etc/rc.conf

我不是网络设置方面的专家,但我已经阅读了我能找到的有关监狱和 IP 别名的所有内容,但没有发现任何有用的内容。也许我忽略了一些微不足道的事情,但我不知道是什么破坏了主机上的网络访问。

答案1

网络掩码太宽,请尝试

ifconfig hn0 inet 192.168.0.200/24 alias

别名通常必须位于同一网络上。

相关内容