設定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
留言