web-dev-qa-db-ja.com

起動時にネットワークブリッジを起動する方法

コンピューターを起動するたびに、(サービスネットワークの再起動を使用して)ネットワークサービスを再起動して、ブリッジ(br0)を有効にする必要があります。コンピューターの起動時にLinuxにこれを実行させるにはどうすればよいので、手動で実行する必要はありませんか?

ネットワークが起動しています。起動すると、他の2つのイーサネットアダプタが稼働しています。

5
Peter Turner

これは、インターフェイスが起動される順序に問題があるようです。/etc/init.d/network initスクリプトを見ると、すべてのインターフェイスを構成する次のビットがあります。

# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=$(ls ifcfg* | \
    LANG=C sed -e "$__sed_discard_ignored_files" \
           -e '/\(ifcfg-lo\|:\|ifcfg-.*-range\)/d' \
           -e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
    LANG=C sort -k 1,1 -k 2n | \
    LANG=C sed 's/ //')

このコマンドの出力により、次のリストが生成されます。

br0
eth0

ifup br0スクリプトに/etc/rc.localを含めて、手動でbr0を強制的に上げる以外にこれに対する解決策は見つかりませんでした[〜#〜] after [〜# 〜]eth0デバイスが起動しました。

[〜#〜]編集[〜#〜]

このような/etc/sysconfig/network-scripts/ifcfg-br0を作成し、再起動時にbr0を開始しました[〜#〜] after [〜#〜] eth0!

# ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
STP=off
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
NETMASK=255.255.255.0

/etc/sysconfig/network-scripts/ifcfg-eth0

# ifcfg-eth0
DEVICE=eth0
#BOOTPROTO=dhcp
HWADDR=BC:AE:C5:34:C9:E8
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no

このようなファイルを使用すると、ネットワークデバイスが次のように表示されます。

Bringing up interface eth0           [  OK  ]
Bringing up interface br0            [  OK  ]
4
slm

「ネットワーク」サービスが有効になっていることを確認してください。 GUIサービス(system-config-services)またはchkconfigに精通している場合は、それを使用できます。これは私自身のために同じ問題を解決しました。

1
user22528

Centos 7.3 x86_64を実行している物理ボックスでこれと同じ問題が発生し、最初に物理アダプターをマザーボード上の別のPCI-Xスロットに移動してから、次のすべてを実行することで問題を解決できました。

ブリッジインターフェイス設定ファイルを削除します:

rm -f /etc/sysconfig/network-scripts/ifcfg-br0

スレーブインターフェース設定ファイルを削除します:

rm -f /etc/sysconfig/network-scripts/ifcfg-enp6s0f0

ここで、enp6s0f0は元のスレーブインターフェイス名であり、ブリッジbr0に割り当てられた唯一のスレーブインターフェイスでした。

元のブリッジを完全に削除し、そのすべてのトレースが削除されていることを確認してください(brctl show)。br0ブリッジインターフェイスがリストされないようにしてください。

ブリッジをシャットダウンします:

ifconfig br0 down

スレーブをシャットダウンします:

ifdown enp6s0f0
ifconfig enp6s0f0 down

ネットワークサービスを停止します:

systemctl stop network.service

必要に応じて手動でブリッジを削除します:(私の場合はそうでした。)

ブリッジを削除する前に、すべてのスレーブインターフェイスをブリッジから削除する必要があります。ブリッジ制御ユーティリティを使用してそれらを削除できます

brctl delif br0 enp6s0f0

すべてのスレーブインターフェイスが削除されたら、ブリッジ自体を削除できます。

brctl delbr br0

残りの構成ファイルがbr0を参照していないことを確認します:

grep -i br0 /etc/sysconfig/network-scripts/ifcfg-*

結果を返さないはずです

私の場合、カードを1スロット上に移動することに基づく新しいインターフェイス名は、enp5s0f0になりました。

インターフェイスを起動し、ethtoolまたは「iplink」で確認します。これにより、インターフェイスでリンクが検出されたことが報告されます。

[root@phaser ~]# ifconfig enp5s0f0 up
[root@phaser ~]# ethtool enp5s0f0
Settings for enp5s0f0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: on (auto)
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

Nmcliを使用して新しいブリッジを作成します。
nmcliは、必要なインターフェース構成ファイルを/ etc/sysconfig/network-scripts /に書き込みます。

ブリッジインターフェイスを作成します:

nmcli conn add type bridge ifname br0 ip4 10.0.0.16/24 gw4 10.0.0.1

スレーブインターフェイスをブリッジに追加します:

nmcli conn add type bridge-slave ifname enp5s0f0 master bridge-br0

ネットワークにすでにスパニングツリーマスターがある場合は、スパニングツリープロトコルを無効にします:

nmcli con modify bridge-br0 bridge.stp no

ブリッジがnmcliでの起動時に開始するように構成されていることを確認します。

nmcli con mod br0 connection.autoconnect yes

この時点で、ネットワークサービスを正常に開始および停止でき、再起動すると、ブリッジインターフェイスが正常に開始されます。

トラブルシューティングノート:

私はその行を省略していると思います:

TYPE=Bridge

br0の元の構成ファイルからこの問題が発生した可能性があります。また、nmcliを使用せず、ブリッジインターフェイスファイルを手動で作成することも問題を引き起こしたと思われます。これは、NetworkManagerがまだインターフェースを管理しようとしていることが原因である可能性があります。これは次の方法で確認できます。

nmcli dev status

このコマンドは、すべてのネットワークインターフェイスとその状態を一覧表示するテーブルを表示します。 Network Managerがインターフェースを制御していない場合、そのSTATEは管理対象外としてリストされます。その他の値は、インターフェースがNetworkManagerの制御下にあることを示します。

/ etc/sysconfig/network-scriptsの下のifcfgファイルを手動で変更することになった場合は、リロードして変更をネットワークマネージャーに通知してください。

nmcli con reload

これにより、ネットワークマネージャーはすべてのifcfgファイルを再読み込みし、変更を認識するように指示されます。

次の投稿を見つけました: Network Managerがインターフェースを制御できないようにするにはどうすればよいですか?

RHEL/CENTOS7.xでNetworkManagerを使用したくない人のために

テスト中に気付いたもう1つの小さな点は、手動で作成した元のインターフェイス構成ファイルのselinuxコンテキストが、自動生成された構成ファイルと同一ではなかったことです。

ls -lZは、自動生成されたifcfg-ファイルが次のコンテキストを持っていることを示しました。

system_u:object_r:net_conf_t:s0

私が作成したファイルには、ユーザーとしてunconfined_uがありました。

Chconを使用してユーザーをsystem_uに設定しました

chcon system_u:object_r:net_conf_t:s0 ifcfg-<filename>

もう1つの観察結果は、新しいブリッジインターフェイスをアップまたはダウンすると、systemdはインターフェイスが接続および切断されたことを適切に報告するようになったことです。これらの変更を行う前は、自分で作成した構成ファイルを使用すると、systemdはインターフェースを認識していないようでした。インターフェイスが構成されているが接続されていないことが示されます。 ethtoolがリンク検出を報告しているにもかかわらず。

1
Chris Smith

同じ問題がありますが、/ etc/sysconfig/network-scripts /の代わりにブリッジインターフェイス/ etc/sysconfig/network-scripts /br0の名前を書いています。ifcfg-br0

/etc/init.d/network」を開いて、「で始まるファイルのみをロードするスクリプトを見つけたときに到着しました。/ifcfg-"