使用 macvlan 模拟网络上的多个硬件设备

使用 macvlan 模拟网络上的多个硬件设备

我正在尝试使用 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 虚拟设备时。

另外,在route中添加路由器仍然无法让我连接到外界:

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

然后以某种方式将新接口绑定到命名空间?

相关内容