web-dev-qa-db-ja.com

Debianシステムのルーティングテーブルに影響を与える構成ファイル

私の知る限り、基本的なネットワーク構成は/etc/network/interfacesに入り、システムはこれらの情報からルーティングテーブルを生成します。また、一般的に/etc/network/interfacesは、ルーティングテーブルを操作するためのカスタムコマンドを永続的に追加する場所であると教えられました(/etc/rc.localまたは/etc/network/if-up.d/のカスタムスクリプトも提案される場合があります)。さらに、/etc/iproute2/rt_tablesでカスタムルーティングテーブルを指定することもできます。

  • (メイン)ルーティングテーブルに影響を与える他の場所はありますか?
    • 特に、/etc/network/interfaces以外に、手動で追加/削除したルートを永続的にする可能性はありますか?
  • 複数のNICを備えたシステムには、プライマリおよびセカンダリネットワークインターフェイスの概念がありますか? )またはこれらの唯一の文言はユーザーを助けるために使用されていますか? (セットアップ中に、プライマリを選択する必要があり、/etc/network/interfacesに適切なコメントが含まれます。)そのような概念が存在する場合、どこで構成できますか?
  • DebianSqueezeとDebianJessieの間でルーティングテーブルの概念に違いはありますか?

私の質問の背景は、レガシーの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
2
sigy

両方の/ 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ルールが転送をブロックしたためです。

1
MariusMatutiae

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
1
maxxvw