저는 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
위의 핑이 작동하도록 하려면 어떻게 해야 합니까?
나는 다음 튜토리얼을 따르고 있습니다 :
- https://serverfault.com/a/900666: 핑이 실패했습니다.
- 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
로컬 핑이 여전히 작동하지 않지만, 내가 아는 한 이는 예상된 현상입니다.맥에버랜드그리고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을 사용하여 호스트 루트 네트워크 네임스페이스에 연결할 수 있습니다.