インターフェイスの実行時にデフォルトパスが追加されるのを防ぐことはできますか?

インターフェイスの実行時にデフォルトパスが追加されるのを防ぐことはできますか?

私のシステムには2つのネットワークカードがあります。他のLANに接続したり、ダイヤルアップ接続を使用したりする場合があります。

    eth0:
    - 10.x.x.x address space
    - no internet gateway
    - only a few devices

eth1 (when used):
- 172.16.x.x or 192.168.x.x or other address spaces
- access to the gateway from LAN to internet

ppp0 (when used):
- internet access through dialup using KPPP

私はifconfigを使用してインターフェイスを起動または停止します(KPPPが処理するppp0を除く)。

eth1を最初に起動すると、DHCPからアドレスを取得し、ゲートウェイをインポートしてルーティングに追加し、問題なくLANとインターネットにアクセスできます。

eth0を最初または2番目に開始すると、そのアドレスを取得し、そのアドレススペース(10.xxxの範囲)内にデフォルトゲートウェイを設定します。 eth0 を最初に起動してから eth1 を起動すると、デフォルトゲートウェイは 10.xxx の範囲にとどまります。

したがって、私が何をしても、eth0はeth1をオーバーライドし、パスからゲートウェイを「要求」します。

eth0がゲートウェイを要求するのを防ぐか、eth1(2番目の場合)がゲートウェイを使用しているかどうかを確認する方法はありますか?それとも、どのインターフェイスのゲートウェイを他のインターフェイスよりも使用する必要があるのか​​を優先できますか?

デフォルトでは、eth1のデフォルトアドレス空間ゲートウェイが有効になっていることを確認します。そうでない場合は、ppp0のデフォルトゲートウェイを使用したいと思います。 eth0がデフォルトゲートウェイを持つのを防ぎたいと思います。

答え1

Raspbianでも同様の問題がありました(以下の解決策はDebianでも動作するようです)。 Raspberry Pi 3には、Wi-FiとEthernetという2つのNICが統合されています。私はそれぞれwlan0とeth0を使います。 wlan0は私の家のWi-Fiネットワークに接続されており、このインターフェースを介してインターネットにアクセスします。 DHCP経由で私のホームルーターから設定を取得します。 eth0は私のWindows PCに直接接続されています変化のないIPが割り当てられました。 Windows PCで構成されていないため、eth0を介してインターネットにアクセスできません。

Raspbianでは、dhcpcdデーモンはネットワークインタフェースの設定を担当します。 eth0インターフェイスに静的IPを設定するには、最後に次の行を追加します/etc/dhcpcd.conf

interface eth0

static ip_address=192.168.2.2/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1

この設定では、dhcpcdは2つのデフォルトパスを作成し、eth0を介したパスはwlan0を介したパスよりも優先順位が高くなります。

pi@raspberrypi:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.2.1     0.0.0.0         UG    202    0        0 eth0
default         192.168.1.254   0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     *               255.255.255.0   U     303    0        0 wlan0
192.168.2.0     *               255.255.255.0   U     202    0        0 eth0

したがって、システムはeth0を介してルーティングしようとしますが、上記のようにインターネットにアクセスできないため、インターネットにアクセスできません。

この問題を解決するために、eth0インターフェイスのnogatewayオプションを使用しました。/etc/dhcpcd.confしたがって、eth0 固有の構成は次のように始まります。

interface eth0

static ip_address=192.168.2.2/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
nogateway

この設定を保存して再起動した後、eth0を介したデフォルトパスはありません。

pi@raspberrypi:~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.254   0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     *               255.255.255.0   U     303    0        0 wlan0
192.168.2.0     *               255.255.255.0   U     202    0        0 eth0

インターネットが表示され、問題が解決しました。

答え2

RHEL6/Fedora 22では、次の点がテストされています。

/etc/sysconfig/network-scripts/ifcfg-eth1 に次の行を追加します。

DEFROUTE=no

eth1 をデフォルトパスを必要としないインターフェイスの名前に置き換えます。

[IPv4]タブの下部にある[ネットワーク上のリソースにのみこの接続を使用する]ボックスを選択して、Network Manager GUIを介してこれを実行することもできます。

DEFROUTE = noは、インターフェイスがアクティブになったときにデフォルトパス(ターゲット0.0.0.0)がルーティングテーブルに追加されるのを防ぎます。つまり。次の項目は追加されません。

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.16.x.x      0.0.0.0         UG        0 0          0 eth1

答え3

DHCP サーバーの構成が正しくありません。残りの世界にルートを提供できない場合は、デフォルトゲートウェイオプションを送信しないでください。このオプションを送信すると、すべてのクライアントがオフライン宛先のパケットを指定されたデフォルトゲートウェイに送信できると想定できます。

したがって、DHCP がデバイスに eth0 のデフォルトゲートウェイを使用するよう指示すると、デバイスは正しいものです。解決策は、DHCPサーバーから誤ったオプションを削除することです。

答え4

eth0Roman Meの答えは素晴らしいですが、いつかインターネットを使用したい場合はどうすればよいのでしょうか。

私がしたことはnogateway私が/etc/dhcpcd.conf追加しましたmetric 1000

これにより、パスは引き続き追加されますが、他のパスでは高さ(低優先順位)として扱われます。

関連情報