ヘッドレスサーバーにこれを設定しようとしていbr0
ます。eth0
veth1
ssh
これは特別な名前空間でsystemdサービスを実行する準備ができています。この名前空間には、仮想デバイスを持つピアがエンドポイントとして存在しますveth2
。
このプロセスへの静的パスを設定する必要があります。私の場合、vpn
他のすべてのトラフィックが標準ゲートウェイに移動している間、しばらくの間パケットをルーティングします。
これがどのように機能するかを理解するために、ssh
サーバー接続が中断されないようにすばやく実行される小さなスクリプトを作成しました。それから私はtraceroute
成功することができますveth2
。サーバーには1つのデバイスしかあり、eth
Wi-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/24
MAC
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 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
macvlan
veth-pairとブリッジの代わりにネットワークネームスペースでaを使用することを検討してください。効果は同じですが、設定はより簡単で効率的です。どちらも同じ足
192.168.100.*/24
で非常に間違った外観をしています。192.168.55.*/24
一般的なネットワーク設定については何も伝えていませんが、すべてのデバイスを接続するネットワークセグメントには一つIP範囲。同じ物理回線に異なるネットワークセグメントが必要な場合は、VLANを使用できます。インターフェイスを終了したり強制的に閉じたりせずに上記の操作を実行できるかどうかはよくわかりません。
veth1
最後の手順でもおよびを設定してください。私の考えでは、それが問題の原因だと思います。eth0
up
デフォルトのネットワークネームスペースで「インターネットなし」が発生するのか、それとも両方で発生するのかは言及していません
nsben1
。質問を編集してこの情報を追加してください。また、ルーティングを確認してください。残りのネットワーク設定がわからず、デフォルトのパスが何であるか、まだ正しいかどうかはわかりません。両方の名前空間の合計を確認してください
ip route
。ip route get 8.8.8.8
macvlanの場合は、新しいmacvlanを作成し、eth0
それをデフォルトに設定し、デフォルトのネットワーク名前eth0
空間を維持してから、新しいmacvlanを新しい名前空間に移動します。新しいネームスペースでは、DHCPまたは他の手段を使用してIPアドレスを取得できます。ルーティングはネームスペースごとに行われるため、デフォルトルートもリセットする必要があります。