更新:/etc/network/interfaces
使用中のため存在しません。netctl
はじめに。
2つのネットワークアダプタを使用して、ArchLinuxを実行するVirtualBoxインスタンスを設定しました。Adapter 1
(eth0
)はNAT(10.0.2.0/24
)に接続され、Adapter 2
(eth1
)はホスト専用ネットワーク(192.168.56.0/24
)に接続されています。私はこれらのアダプタにudev
古典的な名前を使用するための規則を使用しています(しかし名前にも問題があります)。eth0
eth1
enp***
ログインすると、次のメッセージが表示されます。
$ip ルーティング デフォルトでは192.168.56.1 dev eth1 デフォルトは 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 を渡します。 10.0.2.0/24 dev eth0プロトタイプdhcp範囲リンクsrc 10.0.2.15メートル法202 192.168.56.0/24 dev eth1プロトタイプカーネルスコープリンクsrc 192.168.56.31
これにより
$ping google.com ping: google.com: 不明な名前またはサービス
私が理解しているように、これは192.168.56.1
(ホスト専用インターフェイス)NATインターフェイスよりも低いメトリックを追加するためです。
その後、手動で行う場合:
$sudo ip ルート削除のデフォルト $ip ルーティング デフォルトは 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 を渡します。 10.0.2.0/24 dev eth0プロトタイプdhcp範囲リンクsrc 10.0.2.15メートル法202 192.168.56.0/24 dev eth1プロトタイプカーネルスコープリンクsrc 192.168.56.31
わかりました。
$ping google.com PING google.com (172.217.12.174) 56(84) バイトのデータ。 64 バイト from....1e100.net(172.217.12.174): icmp_seq=1 ttl=52 time=11.9 ms 64 バイト from....1e100.net(172.217.12.174): icmp_seq=2 ttl=52 time=11.7 ms ^C --- google.com ping統計--- 2つのデータパケットを送信する、2つのデータパケットを受信する、0%パケット損失、時間3ms rtt 最小/平均/最大/mdev = 11.698/11.782/11.867/0.137 ミリ秒
eth0
もしそうなら、アウトバウンドトラフィックが/(ホストネットワークのみ)ではなく/ 10.0.2.0/24
(ホストへのNATインターフェイス)を介してルーティングされるようにするにはどうすればよいですか?eth1
192.168.56.0/24
この質問はVirtualBoxとは何の関係もありません(メトリックを変更できるVirtualBox設定がある場合は問題ありません)。
次のいずれかを実行する方法があると確信しています。 1) systemd がパスを追加するのを防ぐdefault via 192.168.56.1 dev eth1
ため、または 2)default via 10.0.2.2 dev eth0
毎回デフォルトパスを手動で削除する必要がないように、より低いメトリックを持つパスを追加します。インスタンスを起動します。
まだ考慮していない別の解決策があるかもしれません。これまで、名前、固定IP、DHCPで遊ぶことは役に立ちませんでした。
ゲストオペレーティングシステムはArchLinuxです。
答え1
/etc/network/interfaces
対応するインターフェイス行をファイルに追加します。
post-up route del default via 192.168.56.1 dev eth1
default via 192.168.56.1 dev eth1
インターフェイスが表示されると、パスが削除されます。
答え2
次のような@Bobの提案、ホスト専用ネットワークの固定IP構成ファイルがゲートウェイを指定したことが問題であることに気づきました。私はそれを削除し、すべてが私が望むように動作しました。
これらは2つです。ネットワーク制御はじめに:
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 ルーティング デフォルトは 10.0.2.2 dev eth0 proto dhcp src 10.0.2.15 metric 202 を渡します。 10.0.2.0/24 dev eth0プロトタイプdhcp範囲リンクsrc 10.0.2.15メートル法202 192.168.56.0/24 dev eth1プロトタイプカーネルスコープリンクsrc 192.168.56.31
これは完璧かもしれませんが、私には効果があります。
答え3
はい、古い質問です。しかし、私は数年前に設定しましたが、突然動作が停止したシステム構成に対してデフォルトのルーティングがどのように機能するかを調べるためにここに来ました。
この質問に答えるには、sledgehammerアプローチを使用し、/etc/networkd-dispatcher/routable.d/50-ifup-hooksファイルを入れて、そこから目的の最終ルーティングテーブルを手動で作成できます。デフォルトでは、システムによって生成されたパスを削除して独自のパスを提供します。
ただし、ファイルの権限が755であることを確認してください。これは実行されないので、私の問題です:(