私の知る限り、基本的なネットワーク構成は に入り/etc/network/interfaces
、システムはこれらの情報からルーティング テーブルを生成します。また、一般に は/etc/network/interfaces
ルーティング テーブルを操作するカスタム コマンドを永続的に追加する場所であると教えられました ( または の/etc/rc.local
カスタム スクリプトが提案されることもあります/etc/network/if-up.d/
)。さらに、 でカスタム ルーティング テーブルを指定することもできます/etc/iproute2/rt_tables
。
- (メイン) ルーティング テーブルに影響を与える他の場所はありますか?
- 特に、
/etc/network/interfaces
手動で追加/削除したルートを永続的にする以外に何か方法はありますか?
- 特に、
- 複数のNICを持つシステムには、主要なそしてセカンダリネットワークインターフェースそれとも、これらはユーザーを支援するために使用される文言のみですか? (セットアップ中にプライマリ if を選択し、
/etc/network/interfaces
適切なコメントを含める必要があります。) そのような概念が存在する場合、どこで設定できますか? - Debian Squeeze と Debian Jessie のルーティング テーブルの概念には違いがありますか?
私の質問の背景は、レガシー Debian Squeeze システムと新しい Debian Jessie システムがあり、これらは異なるルーティング テーブルで起動しますが、(私が知る限り) 構成は同一であるということです。 ルーティング テーブルを手動で操作してニーズに合わせ、 を使用して変更を永続的に適用することもできます/etc/network/interfaces
が、何が起こっているのか理解したいのです。
編集
両方のマシンの設定ファイルは次のとおりです。プライバシー上の理由から、各 IP アドレスの最初の部分を変更しました。ただし、サブネットと各ネットワークのアドレス部分は変更されていません。Jessie/etc/network/interfaces.d/
マシンのディレクトリは空です。
/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
ジェシーの出力
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
Squeezeの出力
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
ジェシーの出力
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
Squeezeの出力
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/ネットワーク/インターフェースファイルには、デフォルト ゲートウェイが 2 回指定されているという同じエラーが含まれています。
複数のデフォルトゲートウェイを持つことができるのは、非常に特殊な状況(メトリックを無視)の場合のみです。つまり、複数のルーティングテーブルがあり、それぞれがファイルに指定されている必要があります。/etc/iproute2/rt_tablesただし、各ルーティングテーブルにはシングルデフォルトゲートウェイ。
代わりに、各インターフェースごとに1つ指定します。まったく同じテーブル 主要ここで見られるのは、実装のわずかな違いです。iproute2パッケージと、エラーに対する応答方法を説明します。
の場合ジェシー最初に言及されたゲートウェイ143.103.155.254が、最初に言及されたという理由だけで唯一のゲートウェイとして確立されます。2番目のゲートウェイ27.126.19.193の宣言が行われても、何も起こりません。ない前任者
ip route del default
スクイーズは、代わりに別の方法でエラーに対処します。範囲2番目のゲートウェイのローカルリンク詳細は範囲、 見るiproute2 マニュアル、 どの州:
スコープ リンク --- アドレスはリンク ローカルであり、このデバイス上でのみ有効です。
ウィキペディア次のように述べています。
コンピュータ ネットワークでは、リンク ローカル アドレスは、ホストが接続されているネットワーク セグメント (リンク) またはブロードキャスト ドメイン内の通信に対してのみ有効なネットワーク アドレスです。
したがって、範囲(不正確な同義語範囲)は、そのネットワークセグメント(つまり、そのブロードキャスト ドメインは 143.103.155.0/24 です。このように、Jessie も別の方法で、同じルーティング テーブル内の複数のゲートウェイの誤った宣言に対処しました。
もちろん、予想される行動パッケージがエラーを処理する方法。/etc/ネットワーク/インターフェースファイルは、ステートメントを省略します
gateway 143.103.155.254
(これは、自分のPCのゲートウェイが...自身であると言っているので奇妙です!)これについての素晴らしい説明を読むには、初期ソリューションの段落はこちら; 後ほど、複数のルーティング テーブルを持つ複数のゲートウェイを追加する方法についても説明します。
もしあなたが主張するように、
もう一度確認してみることもできますが、すでに試したにもかかわらず、外部 IP にアクセスできなかったことは確かです。
おそらく、あるインターフェースから別のインターフェースへの IPv4 転送を許可していないことが原因です (sudo として:
echo 1 > /proc/sys/net/ipv4/ip_forward
がそれを処理します)、または iptables ルールによって転送がブロックされたためです。
答え2
Squeeze と Jessie の主な違いは、コマンドが最初と最後をip
呼び出すことです。ifconfig
iproute2
ifconfig は、少なくともメトリックなしでは、複数のゲートウェイ構成を認識しません。そのため、2 つのip route
コマンド (またはroute -n
(非推奨))の間に違いが見られます。
iproute2は複数のルーティングテーブルを追跡できる
ip route show all
プライマリおよびセカンダリ ネットワーク インターフェイスの概念は、それらを区別するための方法にすぎず、通常は eth0 (1 番目) と eth1 (2 番目) と呼ばれますが、順序は異なる場合があります。
はい、次のよう/etc/network/interfaces
に使用して永続的なルートを設定することもできます。up
up ip route add 1.2.3.4/24 via 1.2.3.1