Freebsd
無效的多播介面
我正在嘗試通過
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]
據我所知,在freebsd系統方面沒有太多經驗嘗試ping:
ping -S 192.168.1.2 192.168.1.1
至於arp
- 如果 arp 無法獲取網關的 mac 地址,則 freebsd 伺服器失去了與網關的連接。
- 檢查您的伺服器的網關是否 UP/RUNNING,並檢查兩者的物理連接。
在 FreeBSD 和 macos 上,該
-I
標誌的行為與 Linux 所期望的不同。如果您仔細查看手冊頁,您會看到:-I iface Source multicast packets with the given interface **address**.
$$ emphasis mine $$ 所以
-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