私は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が機能するようにするにはどうすればよいですか?
私は次のチュートリアルに従っています:
- https://serverfault.com/a/900666: pingが失敗しました。
- https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/おすすめドッカーネットワークの作成しかし、DockerがないのでDockerなしで動作したいです。
- https://sreeninet.wordpress.com/2016/05/29/macvlan-and-ipvlan/IPアドレスの設定方法については説明がありません。
- https://docs.oracle.com/cd/E37670_01/E37355/html/ol_mcvnbr_lxc.html実行するインストールコマンドを表示しません。
修正する:
- 上記の方法
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.92
5つの参加者の両方で機能します。ホストルートネットワークネームスペース(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.130
ping 192.168.0.12
net"$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を使用してホストルートネットワークネームスペースに接続できます。