로컬 네트워크에서 여러 장치를 에뮬레이트하기 위해 Linux의 네트워크 네임스페이스를 사용하려고 합니다. 서브넷에서 위장된 노트북 IP가 아닌 실제 네트워크 장치로 표시되기를 원합니다. 가능합니까?
이 네임스페이스를 사용하여 인터넷 액세스가 가능한 여러 bash 스크립트를 실행하고 싶습니다.
sudo ip netns exec netns1 myscript1.sh
sudo ip netns exec netns2 myscript2.sh
가상 네트워크를 만드는 스크립트를 작성 중입니다. 현재 저는 네임스페이스에서 이 작업을 수행하려고 합니다.
INTERFACE=enp59s0
IP1=192.168.2.101/24
# create macvlan and associate it to network device in bride mode
ip link add macvlan1 link $INTERFACE type macvlan mode bridge
# create new network namespace
ip netns add netns1
# associate the macvlan to the new namespace
ip link set macvlan1 netns netns1
# Set IP address
ip -n netns1 addr add $IP1 dev macvlan1
# set macvlan to up
ip netns exec netns1 ifconfig macvlan1 up
이를 통해 서브넷 내에서 장치를 ping할 수 있습니다. 즉, 다음을 수행합니다.
sudo ip netns exec netns1 nmap -sn 192.168.2.1-255
그러나 기본 네임스페이스에서 가상 장치를 핑할 수 없는 경우.
또한 경로에 라우터를 추가해도 여전히 외부 세계에 연결할 수 없습니다.
sudo ip netns exec netns1 ip route add default via 192.168.2.1
sudo ip netns exec netns1 ping 8.8.8.8
From 192.168.2.1 icmp_seq=1 Destination Net Unreachable
어떤 아이디어가 있나요? 이것이 올바른 접근 방식입니까?
ifconfig를 사용하여 IP 별칭을 지정하는 것이 더 낫습니까?
ifconfig enp59s0:0 192.168.2.101 up
그런 다음 어떻게든 새 인터페이스를 네임스페이스에 바인딩합니까?