web-dev-qa-db-ja.com

systemdが選択したデフォルトルートを2つのネットワークインターフェースでオーバーライドするにはどうすればよいですか?

更新: netctl profiles を使用しているため、/etc/network/interfacesは存在しません。

2つのネットワークアダプターでArchLinuxを実行するVirtualBoxインスタンスを設定しました。 Adapter 1eth0)はNAT(10.0.2.0/24)にアタッチされ、Adapter 2eth1)はホストのみのネットワーク(192.168.56.0/24)にあります。私はudevルールを使用して古い方法を使用していますこれらのアダプターのeth0およびeth1の名前(ただし、enp***の名前にも問題が存在していました)。

ログオンすると、次のようになります。

$ ip route 
 default via 192.168.56.1 dev eth1 
 default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 
 10.0.2.0/24 dev eth0 proto dhcp scope link src 10.0.2.15 metric 202 
 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.31

その結果

$ ping google.com 
 ping:google.com:名前またはサービスが不明です

私が理解しているように、これは192.168.56.1(ホストのみのインターフェース)がNATインターフェースよりも低いメトリックで追加されているためです。

次に手動で行う場合:

$ Sudo ip route delete default 
 $ ip route 
 default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 
 10.0.2.0/24 dev eth0 proto dhcp scope link src 10.0.2.15 metric 202 
 192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.31

私は得る

$ ping google.com 
 PING google.com(172.217.12.174)56(84)バイトのデータ。
 64バイト.... 1e100.net(172.217.12.174)から:icmp_seq = 1 ttl = 52 time = 11.9 ms 
 .... 1e100.net(172.217.12.174)から64バイト:icmp_seq = 2 ttl = 52 time = 11.7 ms 
 ^ C 
 --- google.com ping統計--- 
 2パケット送信、2受信、0%パケット損失、時間3ms 
 rtt min/avg/max/mdev = 11.698/11.782/11.867 /0.137ミリ秒

したがって、送信トラフィックがeth0/10.0.2.0/24(ホストのみのネットワーク)ではなくeth1/192.168.56.0/24(ホストへのNATインターフェース)経由でルーティングされるようにするにはどうすればよいですか。

質問は、VirtualBoxに接線的にのみ関連しています(メトリックを変更できるVirtualBox設定があれば、気にしません)。

1)systemdがdefault via 192.168.56.1 dev eth1ルートを追加しないようにする方法があるはずだと思います。または2)より低いメトリックのdefault via 10.0.2.2 dev eth0ルートを追加します。これにより、インスタンスを起動するたびにデフォルトルートを手動で削除する必要がなくなります。

まだ検討していない別の回避策があるかもしれません。これまでのところ、名前をいじって、静的IPとDHCPは役に立ちませんでした。

ゲストOSはArchLinuxです。

2
Sinan Ünür

@ Bobのアドバイス に続いて、ホストオンリーネットワークの静的IPプロファイルがゲートウェイを指定していることが問題であることに気付きました。私はそれを削除し、すべてが思い通りに機能しました。

2つの netctl プロファイルは次のとおりです。

Description='Host only connection'
Interface=eth1
Connection=ethernet
IP=static
Address=('192.168.56.31/24')
DNS=('192.168.1.1')

そして

Description='Internet connection via NAT'
Interface=eth0
Connection=ethernet
IP=dhcp

これは次の結果になります:

$ ip route 
 default via 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 
 10.0.2.0/24 dev eth0 proto dhcp scope link src 10.0.2.15 metric 202 
 192.168.56.0/24 dev eth1 protoカーネルスコープリンクsrc 192.168.56.31

それは完璧かもしれないし、そうでないかもしれませんが、私にとってはうまくいきます。

1
Sinan Ünür

/etc/network/interfacesファイルに対応するインターフェースに次の行を追加します。

post-up route del default via 192.168.56.1 dev eth1

インターフェースの起動時にルートdefault via 192.168.56.1 dev eth1を削除します。

1
Bob