Debian
使用 ip addr 而不是 ifconfig 在 Debian 上報告“RTNETLINK 答案:文件存在”
我有一個 Debian 系統,它用作無線路由器,使用
eth0
和wlan0
. 現在我手動添加了一個額外的eth1
網路ifconfig
:alix:~# ifconfig eth1 192.168.0.2 網路遮罩 255.255.255.0 alix:~# netstat -rn 核心IP路由表 目標網關 Genmask 標誌 MSS 視窗 irtt Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 alix: ~ # ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) 個字節的數據。 來自 192.168.0.254 的 64 個字節:icmp_req=1 ttl=64 time=0.537 ms 來自 192.168.0.254 的 64 個字節:icmp_req=2 ttl=64 time=0.199 ms 來自 192.168.0.254 的 64 個字節:icmp_req=3 ttl=64 time=0.188 ms ^C --- 192.168.0.254 ping 統計 --- 3個包發送,3個接收,0%丟包,時間2005ms rtt min/avg/max/mdev = 0.188/0.308/0.537/0.161 ms
如您所見,一切正常。
現在我想讓配置永久化。因此,我將以下部分添加到
/etc/network/interfaces
:alix:~# sed -n '/iface eth1/,/^$/p' /etc/network/interfaces iface eth1 inet 靜態 地址 192.168.0.2 網路遮罩 255.255.255.0
但是當我嘗試啟動網路時,出現以下錯誤:
alix:~# ifconfig eth1 down alix:~# ifup -v eth1 配置介面 eth1=eth1 (inet) 執行元件 --verbose /etc/network/if-pre-up.d 執行部分:執行 /etc/network/if-pre-up.d/hostapd ip addr add 192.168.0.2/255.255.255.0 廣播 192.168.0.255 dev eth1 標籤 eth1 RTNETLINK 回答:文件存在 啟動 eth1 失敗。
當我
ip
手動執行命令時,我得到同樣的錯誤:alix:~# ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1 RTNETLINK 回答:文件存在
命令有什麼問題?我怎樣才能告訴 Debian 做正確的事?
我知道我必須在啟動設備之前沖洗設備:
# ip addr flush dev eth1
像這樣清除手動設置的介面配置資訊在Ubuntu Server Guide中有提到。
Using
ip addr flush
將起作用,但它也會清除在該界面上設置的所有地址 - 如果您登錄到遠端電腦,可能包括您正在使用的地址。這可能會將您鎖定在設備之外。
RNETLINK answers: File exists
當您嘗試add
使用與現有規則衝突的規則時會發生。我猜 OP 遇到了這個問題,因為他們已經用ifconfig
. 通常可以通過將add
命令轉換為類似結構change
或replace
命令來解決此錯誤。使用
ip addr change
orip addr replace
代替它更安全。