據我所知,基本的網路配置會進入/etc/network/interfaces
,系統會根據這些資訊產生路由表。我還了解到,通常/etc/network/interfaces
是永久添加自訂命令來操作路由表的地方(有時也建議是/etc/rc.local
或 中的自訂腳本/etc/network/if-up.d/
)。此外,人們還可以在/etc/iproute2/rt_tables
.
- 還有其他地方會影響(主)路由表嗎?
/etc/network/interfaces
特別是,除了手動新增/刪除的路由永久化之外,還有其他可能性嗎?
- 具有多個網路卡的系統是否有一個概念基本的和輔助網路介面或者這些只是用來幫助用戶的措詞? (在設定過程中,必須選擇主要的 if 並將
/etc/network/interfaces
包含適當的註釋。)如果存在這樣的概念,可以在哪裡配置它? - Debian Squeeze 和 Debian Jessie 之間的路由表概念有什麼區別嗎?
我的問題的背景是,我有一個舊的 Debian Squeeze 系統和一個新的 Debian Jessie 系統,它們使用不同的路由表啟動,但(據我所知)配置相同。我可以手動操作路由表以滿足我的需求並使更改永久使用,/etc/network/interfaces
但我想了解發生了什麼。
編輯
這是兩台機器的設定檔。出於隱私原因,我更改了每個 IP 位址的前部分。然而,子網路和各個網路的位址部分並沒有改變。/etc/network/interfaces.d/
Jessie 機器上的目錄是空的。
/etc/iproute2/rt_tables
關於傑西
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/iproute2/rt_tables
擠壓時
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
/etc/rc.local
關於傑西
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
/etc/rc.local
擠壓時
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
/etc/network/interfaces
關於傑西
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address 143.103.155.254
netmask 255.255.255.0
network 143.103.155.0
gateway 143.103.155.254
# The primary network interface
auto eth2
iface eth2 inet static
address 27.126.19.194
netmask 255.255.255.248
network 27.126.19.192
broadcast 27.126.19.199
gateway 27.126.19.193
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 143.103.5.1
dns-search subdomain.domain.de
/etc/network/interfaces
擠壓時
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 143.103.155.254
netmask 255.255.255.0
network 143.103.155.0
gateway 143.103.155.254
auto eth2
iface eth2 inet static
address 27.126.19.194
netmask 255.255.255.248
network 27.126.19.192
broadcast 27.126.19.199
gateway 27.126.19.193
ip route show table main
Jessie的輸出
default via 143.103.155.254 dev eth1
143.103.155.0/24 dev eth1 proto kernel scope link src 143.103.155.254
27.126.19.192/29 dev eth2 proto kernel scope link src 27.126.19.194
ip route show table main
擠壓時的輸出
27.126.19.192/29 dev eth2 proto kernel scope link src 27.126.19.194
143.103.155.0/24 dev eth0 proto kernel scope link src 143.103.155.254
default via 27.126.19.193 dev eth2
default via 143.103.155.254 dev eth0 scope link
route -n
Jessie的輸出
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 143.103.155.254 0.0.0.0 UG 0 0 0 eth1
143.103.155.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
27.126.19.192 0.0.0.0 255.255.255.248 U 0 0 0 eth2
route -n
擠壓時的輸出
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
27.126.19.192 0.0.0.0 255.255.255.248 U 0 0 0 eth2
143.103.155.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 27.126.19.193 0.0.0.0 UG 0 0 0 eth2
0.0.0.0 143.103.155.254 0.0.0.0 UG 0 0 0 eth0
答案1
你的兩個/etc/網路/接口檔案包含一個相同的錯誤:預設閘道被指定兩次。
您可以擁有多個預設網關,僅在非常特定的情況下(忽略指標):您有多個路由表,每個路由表都在檔案中指定/etc/iproute2/rt_tables,但每個路由表應有一個單身的預設網關。
相反,您可以在非常同一張桌子 主要的。所以我們在這裡看到的是執行上的細微差別ip路由2包,以及它如何回應錯誤。
如果是傑西,它將第一個提到的網關 143.103.155.254 建立為唯一的網關,因為它是第一個提到的。當聲明第二個網關 27.126.19.193 時,沒有任何反應,因為它是不是之前是
ip route del default
相反,Squeeze 以不同的方式處理錯誤:它限制了範圍第二個門戶的連結本地。欲了解更多信息範圍, 看iproute2 手冊,其中指出:
範圍連結 --- 位址是連結本地的,僅在此設備上有效。
維基百科指出:
在電腦網路中,連結本地位址是僅對主機所連接的網段(連結)或廣播網域內的通訊有效的網路位址。
因此範圍(不精確的同義詞範圍第二個網關的網路段(IE,其廣播域143.103.155.0/24)。因此,Jessie 也以不同的方式處理了同一路由表中多個網關的錯誤聲明。
當然,沒有預期行為關於包如何處理錯誤。您設定的正確方法/etc/網路/接口文件是省略該語句
gateway 143.103.155.254
總共(這也很奇怪,因為它說你自己的電腦的網關是......它自己!)。要查看對此的詳細解釋,請閱讀初始解決方案段落在這裡;稍後,還解釋瞭如何新增多個網關,以及多個路由表。
如果像你聲稱的那樣,
我可以再次嘗試驗證,但我很確定我已經嘗試過,但仍然無法存取任何外部 IP。
這很可能是因為您不允許 IPv4 從一個介面轉送到另一個介面(如 sudo:
echo 1 > /proc/sys/net/ipv4/ip_forward
處理這個),或因為你的 iptables 規則阻止轉送。
答案2
Squeeze 和 Jessie 之間的主要區別在於ip
命令要求ifconfig
第一個和iproute2
最後一個。
ifconfig 不知道多個網關配置,至少沒有指標。這就是為什麼您會看到兩個ip route
命令之間的差異(或route -n
(已棄用))
iproute2可以追蹤多個路由表
ip route show all
主網路介面和輔助網路介面的概念只是一種區分它們的方法,通常稱為 eth0(第一個)和 eth1(第二個),但順序可能會有所不同!
是的,您可以透過/etc/network/interfaces
使用up
以下方式設定永久路由:
up ip route add 1.2.3.4/24 via 1.2.3.1