ローカルネットワーク上の複数のデバイスをエミュレートするために、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
ただし、デフォルトの名前空間で仮想デバイスをpingできない場合。
また、ルートにルータを追加しても、外部の世界に接続できません。
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
その後、どういうわけか新しいインターフェースを名前空間にバインドしますか?