私の質問の概要バージョンは次のとおりです。gateway
ネットワークインタフェースファイルのパラメータ設定がネットワークインタフェースに影響しないのはなぜですか?
または、post-up
コマンドが失敗した場所で動作するのはなぜgateway
ですかgateway
、設定パラメータは正確に何をすべきですか?
私の問題の詳細な説明は次のとおりです。
/etc/network/interfaces
Debian を実行している VirtualBox VM で、次のネットワークインタフェースプロファイル( )を検討してください。
# /etc/network/interfaces
# Original file
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface (NAT)
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
# Host-only interface (vboxnet0)
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.1
マシンを起動して実行すると、route -n
次の結果が表示されます。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
驚くべきことに、このインターフェイスには192.168.56.0/24ネットワーク用のゲートウェイは設定されていませんeth1
。
ここで、次の代替構成ファイルを考えてみましょう。
# /etc/network/interfaces
# Modified file
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface (NAT)
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
# Host-only interface (vboxnet0)
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
# gateway 192.168.56.1
post-up route add default gw 192.168.56.1
pre-down route del default gw 192.168.56.1
この構成でコンピュータを再起動して実行すると、route -n
次の結果が表示されます。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.56.1 0.0.0.0 UG 0 0 0 eth1
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
したがって、post-up
デフォルトゲートウェイを設定する/メソッドは機能しますが、パラメータ自体を使用することは機能しません。私がここで何を見逃しているのでしょうか?pre-down
gateway
答え1
マニュアルで(man interfaces
):
gateway address
Default gateway (dotted quad)
gateway
したがって、基本静的ルーティングではなくルーティング。静的ルートは、デフォルトゲートウェイを使用するように設計されていないネットワークトラフィックに使用されます。デフォルトゲートウェイは、ローカルネットワークに向かうのではなく、ルーティングテーブルにデフォルトルートが割り当てられていないすべてのトラフィックに使用されます。 DHCP インターフェイスeth0
の取得基本ゲートウェイその後、指定された静的eth1
パスを使用できますpost-up route add default gw
。
追加資料:
2 つのネットワークインターフェイスで別々のネットワークトラフィック
以下を試してください。
echo '200 hostonly' >> /etc/iproute2/rt_tables
編集する/etc/network/interfaces
。
# The loopback network interface
auto lo
iface lo inet loopback
# The VirtualBox NAT interface.
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
# The VirtualBox host-only interface.
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0
post-up ip route add 192.168.56.0/24 dev eth1 src 192.168.56.1 table hostonly
post-up ip route add default via 192.168.56.1 dev eth1 table hostonly
post-up ip rule add from 192.168.56.2/32 table hostonly
post-up ip rule add to 192.168.56.2/32 table hostonly
再起動してどのように見えるかを確認してください。
答え2
ネットワークの観点からは、デフォルトゲートウェイ(最後のゲートウェイとも呼ばれます)ではなく、ネットワークゲートウェイがネクストホップとして使用されます。最初のRoute -nコマンド(サフィックスなし)では、10.0.2.2が最後のゲートウェイとして表示されます。コンピュータがルーティングテーブルにないネットワークを要求すると、不明なネットワークトラフィックがそのアドレスに転送されます。インターフェイス設定のゲートウェイ設定は、そのネットワーク上のトラフィックのネクストホップです。ただし、インターフェイスがそのネットワークに直接接続されているため、トラフィックを転送するためにゲートウェイは必要ありません。ネットワークは常に知られており、そのネットワークのデバイスに向かうトラフィックはそのデバイスに直接転送されます。ポストコマンドは最後の手段として2つのゲートウェイを作成しています(これは望ましくありません)。 192.168.56.1を実際の最後の手段として使用するには、デフォルトパスを追加する代わりに置き換える必要があります。
答え3
これが少し刺激を与えた
ルーティングテーブルは、すべてのインターフェイス間で接続がルーティングされる方法に関する情報を提供します。
インターフェイスのデフォルトパスは他の目的に使用され、システム全体ではなくそのインターフェイスにのみ適用されます。
ネットワークインターフェイスが1つしかない場合、これは唯一のデフォルトゲートウェイなので、自動的にデフォルトパスに設定されます。
ルーティングテーブルは下から上に動作するため、一番上のデフォルトゲートウェイが接続を試みるために使用される最後のパスになります。