設定Ubuntu使用IGMPv2及解決收不到IGMP封包問題

設定Ubuntu使用IGMPv2

因為Ubuntu要修改force_igmp_version內容需要用sudo提升權限,所以像下面這行指令直接在echo前面打sudo在前面是沒用的,因為檔案輸出還是本身權限

sudo echo 2 > /proc/sys/net/ipv4/conf/${YOUR_NETWORK_DEVICE}/force_igmp_version

使用sudo指令來修改可用下面兩種

方法1. 用tee指令

echo 2 | sudo tee /proc/sys/net/ipv4/conf/${YOUR_NETWORK_DEVICE}/force_igmp_version

方法2. 用sh指令設置

sudo sh -c "echo 2 > /proc/sys/net/ipv4/conf/${YOUR_NETWORK_DEVICE}/force_igmp_version"

方法3. 用sysctl設定

sudo sysctl net.ipv4.conf.${YOUR_NETWORK_DEVICE}.force_igmp_version=2
上面都是針對單一網路裝置, 另外也有對全系統網路裝置的設定
sudo sysctl net.ipv4.conf.all.force_igmp_version=2

上述三種方法都是暫時性的,
如果系統要在開機時套用,請把設定寫在/etc/sysctl.conf

解決收不到IGMP封包的問題

此外,網路上有些解法是會建議要設定rp_filter為0,讓封包不會被過濾。我個人的經驗是主要還是force_igmp_version有全域跟網卡自己的要先釐清是否有改好,再來看rp_filter。
sudo sysctl net.ipv4.conf.${YOUR_NETWORK_DEVICE}.rp_filter=0
以上設定如果要開機時套用,請把設定寫在/etc/sysctl.conf

留言