Linux
啟動一個虛擬介面而不檢查它是否在其他地方啟動
有沒有一種方法可以在不首先發送 arping 以檢查該 IP 地址是否已在其他地方使用的情況下啟動虛擬介面?
我正在使用一種專有產品,該產品建議複製 ifup 腳本並註釋掉 arping 檢查部分。但是,ifup 腳本的自定義版本需要儲存在某個地方,這不是最好的維護方式。
有沒有更好的方法在沒有 arping 檢查的情況下調出界面?
您應該能夠在 Red Hat 的網路腳本範圍內執行此操作。但是,由於這些腳本中的錯誤,您不能這樣做。
這就是我的做法:
首先,在介面啟動時完全抑制 ARP。然後在介面啟動後重新啟用它。(您必須重新啟用 ARP,否則機器將無法通信。)
要在介面初始化期間抑制 ARP,請添加到
/etc/sysconfig/network-scripts/ifcfg-eth0
. 這實際上會在核心級別禁用 ARP,這應該會使任何使用嘗試arping
失敗。ARP=no
要在介面啟動後重新啟用 ARP,請
/sbin/ifup-local
使用必要的命令創建一個文件:#!/bin/bash ip link set dev $1 arp on
然而,這失敗了,正是因為它導致
arping
失敗。由於/etc/sysconfig/network-scripts/ifup-eth
腳本實際上並沒有arping
足夠仔細地檢查返回程式碼,因此如果您實際設置,ARP=no
則初始化將失敗,並顯示不正確的錯誤消息,聲稱 IP 地址已在使用中。這為您留下了供應商推薦的原始選項:破解腳本,並(可選)將錯誤報告給 Red Hat。