別のネットワーク名前空間に追加のIPアドレスを作成する

別のネットワーク名前空間に追加のIPアドレスを作成する

私はUbuntu 18.04、Linuxカーネル5.4.0を実行しています。私のラップトップのローカルIPアドレスは192.168.0.130です。

$ sudo ip addr show dev wlp2s0
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 7c:2a:31:09:3e:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.130/24 brd 192.168.0.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 2782sec preferred_lft 2782sec
    inet6 fe80::b375:a43d:9705:556a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ルーティングテーブルは次のとおりです。

$ sudo ip route
default via 192.168.0.1 dev wlp2s0 proto dhcp metric 600 
169.254.0.0/16 dev wlp2s0 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.0.0/24 dev wlp2s0 proto kernel scope link src 192.168.0.130 metric 600 

ローカルネットワークの他のホストに表示される追加のIPアドレス(例:192.168.0.12)を使用したいと思います。仕組みは次のとおりです。

$ sudo ip addr add 192.168.0.95/24 dev wlp2s0
$ ssh 192.168.0.12 ping 192.168.0.95
...
64 bytes from 192.168.0.95: ...
(works)
^C
$ sudo ip addr del 192.168.0.95/24 dev wlp2s0

これで、このIPアドレスを次のような別々のネットワークネームスペースに移動したいと思いますnet5

$ sudo ip netns add net5
$ sudo ip link add link wlp2s0 name net5in type macvlan
$ sudo ip link set net5in netns net5
$ sudo ip netns exec net5 ip addr add 192.168.0.95/24 brd + dev net5in
$ sudo ip netns exec net5 ip link set net5in up
$ ssh 192.168.0.12 ping 192.168.0.95
...
From 192.168.0.95: ... Destination Host Unreachable
(doesn't work)
^C
$ sudo ip netns add net5

上記のpingが機能するようにするにはどうすればよいですか?

私は次のチュートリアルに従っています:

修正する:

  • 上記の方法type ipvlan mode l2の代わりにそれを使用して動作させることができました。type macvlanローカルpingはまだ機能していませんが、私が知っている限り、これは予想される現象です。マクエバーランドそしてIPVLAN

ベストアンサー1

のように見えるマクエバーランドWi-Fiでは動作しません。参考https://unix.stackexchange.com/a/555676もっと学ぶ。次のコマンドを使用して、Wi-Fiとイーサネットで動作させることができます。ipvlanモードl2を入力してください。変えるタイプマックブラン

以下は、それぞれ独自のネットワーク名前空間を持つ3つのIPアドレスを生成する完全な設定です。

sudo ip link del hostnet ||:
sudo ip link add hostnet link wlp2s0 type ipvlan mode l2
sudo ip addr add 192.168.0.90/32 brd + dev hostnet
sudo ip link set hostnet up  # `ip route add' below needs it.

for I in 91 92 93; do
sudo ip netns del net"$I" && sleep .5 ||:
sudo ip netns add net"$I"
sudo ip netns exec net$I ip link set lo up
sudo ip link add link wlp2s0 name net"$I"in type ipvlan mode l2
sudo ip link set net"$I"in netns net"$I"
sudo ip netns exec net"$I" ip addr add 192.168.0."$I"/24 brd + dev net"$I"in
sudo ip netns exec net"$I" ip link set net"$I"in up
sudo ip netns exec net"$I" ip route add default via 192.168.0.1
sudo ip route add 192.168.0."$I"/32 dev hostnet
done

これによりping 192.168.0.91、たとえば、、、およびping 192.168.0.925つの参加者の両方で機能します。ホストルートネットワークネームスペース(IPアドレス192.168.0.130)、3つのそれぞれ:ホストネットワークネームスペース(IPアドレス192.168.0.91などping 192.168.0.93)、ローカルネットワークなどのホスト(IPアドレス(例:192.168.0.12))。ping 192.168.0.130ping 192.168.0.12net"$I"

これにより、TCP接続とUDPパケットが5人の参加者の間で任意の方向に機能することができます。

これにより、UDPブロードキャストが5人の参加者間で機能することができます。これは上記の条項によって提供されますbrd +。しかし、基本的に放送が有効になっているため、この条項は必要ないようです。

TCP接続には正しいIPアドレスがありますが、ホストルートネットワーク名前空間からホストネットワーク名前空間へのnet"$I"TCP接続には、受信IPアドレス192.168.0.130の代わりに192.168.0.90が表示されます。

ホストnet"$I"ネットワークネームスペースは、IPアドレス192.168.0.90または192.168.0.130を使用してホストルートネットワークネームスペースに接続できます。

おすすめ記事