外部の世界からアクセスできる仮想マシンを作成しようとしています。私が使用しているサーバーには4つのNICカードがあります。プライベートネットワークのNICカードがホストオペレーティングシステム(em4)の管理インターフェイスとして機能するようにしたいと思います。私のブリッジデバイスとインターフェースする別のNICカードを1つまたは2つ必要としています(em1はbr0のスレーブです)。トラフィックはブリッジからホストオペレーティングシステムに、またはその逆にルーティングされるべきではありません!ブリッジアプローチを使用して完全な分離を達成したかどうかはわかりません。
ホストネットワークカードのみをインストールした場合、ルーティングテーブルは次のようになります。セキュリティ上の理由でIPアドレスが変更されましたのでご注意ください。
[root@someserv ~]# ip route
default via 10.110.0.1 dev em4 proto dhcp metric 101
10.110.0.0/21 dev em4 proto kernel scope link src 10.110.0.235 metric 101
ここでは、コミュニケーションは完全に機能します。問題は、ブリッジデバイスの起動時に開始されます。 nmcliオプション "ipv4.never-default"を設定して、ブリッジインターフェイスにデフォルトパスが追加されないようにしました。ただし、br0 の起動後に DHCP を使用するか手動で割り当てるかに関係なく、ルーティングテーブルに次のように表示されます。
[root@someserv ~]# ip route
default via 10.110.0.1 dev em4 proto dhcp metric 101
10.110.0.0/21 dev em4 proto kernel scop link src 10.110.0.235 metric 101
167.91.112.0/21 dev br0 proto kernel scrop link src 167.91.112.50 metric 425
最後のエントリは、私の会社のコンピュータが167.91.112.0と同じネットワーク上にあるために問題になります。パスがどこにもなくサーバーを管理できなくなるため、ブリッジを起動するたびにパスを削除する必要があります。 SSHではなく実際の端末に接続する必要があるため、これは非常に迷惑です。
インターフェイスがこのパスを追加するのを防ぐ方法を知っている人はいますか?または、仮想マシン用のインターフェイスを設定するより良い方法はありますか?私は以前ここでこの質問を見たことがあります(インターフェイスの実行時にデフォルトパスが追加されるのを防ぐことはできますか?) しかし、答えは古く、Oracle Linux 7または8とは確かに関係がありません。
最後に、私が試したもう一つのアイデアは、空のパスファイルを作成することでした。
[root@someserv ~]# cd /etc/sysconfig/network-scripts/
[root@someserv network-scripts]# ls -l *route*
-rwxr-xr-x. 1 root root 870 May 22 2020 ifdown-routes
-rwxr-xr-x. 1 root root 2001 May 22 2020 ifup-routes
-rw-r--r--. 1 root root 0 Aug 22 15:02 route-br0
それも動作しません。
〜ご飯
答え1
ありがとう、アレックス。
あなたは間違いなく正しいです。この修正は DHCP および手動設定に適用されます。 「man 8 networkmanager」コマンドは非常に便利です。私の場合は、/etc/NetworkManager/dispatcher.dに99-bridge-upというスクリプトを作成しました。
[root@someserv dispatcher.d]# cat 99-bridge-up
#!/bin/bash
if [ "$1" == "br0" ] && [ "$2" == "up" ]; then
ip route del 167.91.112.0/21
fi
答え2
ネットワーク構成の健全性については言及できないので、回避策に焦点を当てます。問題の解決策は、br0を起動した後にパスを削除することです。そうですか?私の考えでは、インターフェイスはNetworkManagerによって制御されているようです。したがって、私の提案は、br0
インターフェイスがオンラインになるたびにNetworkManagerにパスを削除させることです。
内部的にbashスクリプトを生成する必要があります/etc/NetworkManager/dispatcher.d/
。このbashスクリプトはデフォルトで次のことを行います。何良い
ip route del 167.91.112.0/21 dev br0
NetworkManagerスクリプトの例はたくさんあります。これが少なくとも一時的に問題を解決するのに役立つことを願っています。