我正在尝试ping
通过命令与指定接口一起使用
ping -I re3 192.168.1.1
我知道re3
存在于ifconfig
re3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
ether e8:de:27:01:7f:e7
inet6 fe80::eade:27ff:fe01:7fe7%re3 prefixlen 64 scopeid 0x4
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
不幸的是我无法 ping 通它的网关:
$/root: ping -I re3 192.168.1.1
ping: invalid multicast interface: `re3'
那是什么意思?
更新
$arp 192.168.1.1
? (192.168.1.1) at (incomplete) on re3 expired [ethernet]
答案1
在 FreeBSD 和 macos 上,该-I
标志的行为与 Linux 中的预期不同。如果你仔细检查手册页,你会看到:
-I iface Source multicast packets with the given interface **address**.
[强调我的]
因此该-I
标志实际上需要一个地址,而不是一个接口。您可以通过以下方式确认:
$ ping -I 192.168.1.2 192.168.1.1
但除非您的目标 IP 地址是多播地址,否则这仍然会失败。
traceroute
要获得我们都知道并期望Linux 的行为,请-S
改用该标志并指定您要使用的接口的 IP 地址:
$ ping -S 192.168.1.2 192.168.1.1
PING 192.168.1.1 (192.168.1.1) from 192.168.1.20: 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=5.956 ms
答案2
对freebsd系统没有太多经验,据我所知,ping尝试:
ping -S 192.168.1.2 192.168.1.1
至于ARP
- 如果 arp 无法获取网关的 MAC 地址,那么 freebsd 服务器就失去了与网关的连接。
- 检查服务器的网关是否已启动/正在运行,并检查两者的物理连接。