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