Networking

post-up 掛鉤中將此 ip 命令轉換為 route 命令

  • November 18, 2018

我無法ip通過post-up. /etc/network/interfaces以下是相關細節:

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# Network A
allow-hotplug eth0
iface eth0 inet static
address 10.1.10.100
netmask 255.255.255.0
gateway 10.1.10.1

# Network B
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.0.0
gateway 127.0.0.1

相關ip命令和路由表

ip route add 192.168.50.0/24 via 10.1.10.100 dev eth0
# This command makes things happy...

$ ip route show
default via 10.40.16.1 dev eth0
10.1.10.0/24 dev eth0  proto kernel  scope link  src 10.1.10.100
192.168.0.0/16 dev eth1  proto kernel  scope link  src 192.168.100.1
192.168.50.0/24 via 10.1.10.100 dev eth0

(不工作)post-up/post-down鉤子

#/etc/network/interfaces

# Network A
allow-hotplug eth0
iface eth0 inet static
address 10.1.10.100
netmask 255.255.255.0
gateway 10.1.10.1
post-up route add -net 192.168.50.0 netmask 255.255.255.0 eth0
post-down route del -net 192.168.50.0 netmask 255.255.255.0 eth0

# Network B
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.0.0
gateway 127.0.0.1

免責聲明

ip route add...命令可以解決問題,但我需要將其作為永久靜態路由,因此需要這些post-up東西。我似乎無法正確使用語法。當我/etc/network/interfaces在本地測試網路上執行嘗試版本時,重新啟動後路由不會顯示在路由表中,所以我認為post-up由於語法錯誤,它無法執行鉤子。

更新

管理對於/etc/network/interfaces給我關於post-up命令語法的線索並沒有太大幫助,這就是我發現的全部:

張貼

啟動介面後執行命令。如果此命令失敗,則 ifup 中止,避免將介面標記為已配置(即使它確實已配置),列印一條錯誤消息,並以狀態 0 退出。此行為將來可能會改變。

只需將ip命令添加為up命令/etc/network/interfaces(無需轉換為routepost-up是 的別名up):

allow-hotplug eth0
iface eth0 inet static
  address 10.1.10.100
  netmask 255.255.255.0
  gateway 10.1.10.1
  up ip route add 192.168.50.0/24 via 10.1.10.100 dev eth0

不需要 a down,因為當介面關閉時,通過該介面的任何路由都將自動刪除。

順便說一句:您正在通過剛剛提出的本地 IP 地址添加到另一個網路的路由?該系統是否被用作網關?

編輯:

, up,downpre-up標籤就是這樣:標籤來指示當時需要執行哪些命令。這些命令可以是任何東西,例如發送電子郵件或其他任何東西。沒有特殊語法…

引用自:https://unix.stackexchange.com/questions/199412