ブリッジインターフェイスを設定し、eth0を追加し、インターネットに接続する方法

ブリッジインターフェイスを設定し、eth0を追加し、インターネットに接続する方法

ヘッドレスサーバーにこれを設定しようとしていbr0ます。eth0veth1ssh

これは特別な名前空間でsystemdサービスを実行する準備ができています。この名前空間には、仮想デバイスを持つピアがエンドポイントとして存在しますveth2

このプロセスへの静的パスを設定する必要があります。私の場合、vpn他のすべてのトラフィックが標準ゲートウェイに移動している間、しばらくの間パケットをルーティングします。

これがどのように機能するかを理解するために、sshサーバー接続が中断されないようにすばやく実行される小さなスクリプトを作成しました。それから私はtraceroute成功することができますveth2。サーバーには1つのデバイスしかあり、ethWi-Fiがないため、これを行う必要があります。

私の問題は、スクリプトを実行した後にサーバーがインターネットにアクセスできなくなることです。私はおそらくここで多くを見逃しているでしょう。誰でも助けることができますか?

私のスクリプト:

pi@testpi:~ $ cat add_bridge_and_veth1.sh 
brctl addbr br0;
ip addr del 192.168.100.222/24 dev eth0;
ip addr add 192.168.100.222/24 dev br0;
brctl addif br0 eth0;
ip link set dev br0 up;
ip link add name veth1 type veth peer name veth2;
brctl addif br0 veth1;
brctl show;
ip netns add nsben1;
ip link set veth2 netns nsben1;
ip netns exec nsben1 ip addr add 192.168.55.101/24 dev veth2;
ip netns exec nsben1 ip link set lo up;
ip netns exec nsben1 ip link set veth2 up;

デフォルトの名前空間にはそれ以降はインターネットがありません。

pi@testpi:~ $ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.100.222 (192.168.100.222)  3085.668 ms !H  3085.488 ms !H  3085.393 ms !H
pi@testpi:~ $ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.100.222 icmp_seq=1 Destination Host Unreachable

編集:私の好みはとても簡単です。デバイスに応じて:eth0ルーターから静的IPを取得します。192.168.100.0/24MAC192.168.100.222

pi@testpi:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.222/24 brd 192.168.100.255 scope global dynamic noprefixroute eth0
       valid_lft 83282sec preferred_lft 72482sec
    inet6 fe80::247e:fd3c:36d7:68f5/64 scope link 
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.222/24 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fe98:704b/64 scope link 
       valid_lft forever preferred_lft forever
5: veth1@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
    link/ether e2:bc:58:01:67:92 brd ff:ff:ff:ff:ff:ff link-netns nsben1
    inet 169.254.205.121/16 brd 169.254.255.255 scope global noprefixroute veth1
       valid_lft forever preferred_lft forever
    inet6 fe80::db71:b4e9:c60f:5865/64 scope link 
       valid_lft forever preferred_lft forever

インターネットはありませんが、nsben1それはまだ私の主な関心事ではありません。私は最初にすべてがデフォルトの名前空間で動作するようにしたかったのです。

root@testpi:~# ip netns exec nsben1 ping 8.8.8.8
connect: Network is unreachable

ip route以下は、デフォルト値と名前空間の出力ですnsben1。インターネット検索結果Network is unreachableによると、デフォルトの名前空間にはアクセスできないようです。nsben1これが必ずしも問題があることを意味するわけではありませんがnsben1、それさえも現在としては主な問題ではありません。

root@testpi:~# ip route
192.168.55.0/24 dev veth2 proto kernel scope link src 192.168.55.101 
root@testpi:~# ip route get 8.8.8.8
RTNETLINK answers: Network is unreachable
root@testpi:~# ip netns exec nsben1 ip route
192.168.55.0/24 dev veth2 proto kernel scope link src 192.168.55.101 
root@testpi:~# ip netns exec nsben1 ip route get 8.8.8.8
RTNETLINK answers: Network is unreachable

完全性のip aためにnsben1

root@testpi:~# ip netns exec nsben1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: veth2@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 92:31:7e:0f:89:9d brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.55.101/24 scope global veth2
       valid_lft forever preferred_lft forever
    inet6 fe80::9031:7eff:fe0f:899d/64 scope link 
       valid_lft forever preferred_lft forever

@berndbaumchのアプローチを試しました。最初の5つのコマンドのみを実行

brctl addbr br0;
ip addr del 192.168.100.222/24 dev eth0;
ip addr add 192.168.100.222/24 dev br0;
brctl addif br0 eth0;
ip link set dev br0 up;

スクリプトから。これを行うと、次の出力が表示され、まだ同じIPを持っていますが、br0これはeth0間違っている可能性があります。

pi@testpi:~ $ sudo ./add_bridge.sh
pi@testpi:~ $ ip route
192.168.100.0/24 dev br0 proto kernel scope link src 192.168.100.222 
pi@testpi:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.222/24 brd 192.168.100.255 scope global dynamic noprefixroute eth0
       valid_lft 86389sec preferred_lft 75589sec
    inet6 fe80::247e:fd3c:36d7:68f5/64 scope link 
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.222/24 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fe98:704b/64 scope link 
       valid_lft forever preferred_lft forever

次に、次のように追加されたスクリプトを実行しようとしますip link set dev eth0 down;up

ip link set dev eth0 down;
brctl addif br0 eth0;
ip link set dev eth up;

当然連絡が切れましたssh。おそらく、接続しようとしているIPとeth0同じIPを持つことが正常である可能性があります。br0そうでない場合は、そのIPを使用しましたが、なぜ削除されませんでしたか?ip addr del 192.168.100.222/24 dev eth0;

答え1

  1. macvlanveth-pairとブリッジの代わりにネットワークネームスペースでaを使用することを検討してください。効果は同じですが、設定はより簡単で効率的です。

  2. どちらも同じ足192.168.100.*/24で非常に間違った外観をしています。192.168.55.*/24一般的なネットワーク設定については何も伝えていませんが、すべてのデバイスを接続するネットワークセグメントには一つIP範囲。同じ物理回線に異なるネットワークセグメントが必要な場合は、VLANを使用できます。

  3. インターフェイスを終了したり強制的に閉じたりせずに上記の操作を実行できるかどうかはよくわかりません。veth1最後の手順でもおよびを設定してください。私の考えでは、それが問題の原因だと思います。eth0up

  4. デフォルトのネットワークネームスペースで「インターネットなし」が発生するのか、それとも両方で発生するのかは言及していませんnsben1。質問を編集してこの情報を追加してください。

  5. また、ルーティングを確認してください。残りのネットワーク設定がわからず、デフォルトのパスが何であるか、まだ正しいかどうかはわかりません。両方の名前空間の合計を確認してくださいip routeip route get 8.8.8.8


macvlanの場合は、新しいmacvlanを作成し、eth0それをデフォルトに設定し、デフォルトのネットワーク名前eth0空間を維持してから、新しいmacvlanを新しい名前空間に移動します。新しいネームスペースでは、DHCPまたは他の手段を使用してIPアドレスを取得できます。ルーティングはネームスペースごとに行われるため、デフォルトルートもリセットする必要があります。

関連情報