使用一台带有一个物理网卡的 Ubuntu 机器,我想让我的机器上看起来有两台或更多台机器真实的网络,全部由这台 Ubuntu 机器控制。
例如,我有一个 192.168.1.x 网络。我的 Ubuntu 机器的 IP 为 192.168.1.10,mac 地址为 00:11:22:33:44:55。我想部署另一台“机器”,其IP地址为192.168.1.11,mac地址为55:44:33:22:11。
因此,当我从 192.168.1.9 进行 arp 扫描本地网络时,它应该显示以下内容。
...
192.168.1.10 00:11:22:33:44:55
192.168.1.11 55:44:33:22:11:00
...
两台机器都需要响应真实网络上其他真实机器的 ping 操作。这个想法是让 192.168.1.9 看起来有 .10 和 .11两台独立的机器在真实网络上。
寻找一组相对简单的命令来创建这个“机器”,而不创建任何额外的虚拟机或 Docker 容器。
在此先感谢您的帮助!
答案1
我有一个地址为 192.168.1.175 的系统:
# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 2c:f0:5d:c9:12:a9 brd ff:ff:ff:ff:ff:ff
altname eno2
altname enp0s31f6
inet 192.168.1.175/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 80184sec preferred_lft 80184sec
inet6 fe80::ed9c:756f:92a:ef21/64 scope link noprefixroute
valid_lft forever preferred_lft forever
我们将添加一个地址为 192.168.1.190 的 macvlan 接口,并证明它具有不同的 MAC 地址。
创建网络命名空间:
ip netns add ns0
创建一个链接到您的主 NIC 的 macvlan 设备并将其放置在ns0
命名空间中:
ip link add macvlan0 netns ns0 link eth0 type macvlan mode bridge
这让我们:
# ip -n ns0 link show macvlan0
6386: macvlan0@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether c2:f9:01:dd:eb:95 brd ff:ff:ff:ff:ff:ff
为新接口分配地址:
ip -n ns0 addr add 192.168.1.190/24 dev macvlan0
并调出界面:
ip -n ns0 link set macvlan0 up
从网络上的另一个系统:
pi@retropie:~ $ sudo arp-scan 192.168.1.175 192.168.1.190
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 2 hosts (https://github.com/royhills/arp-scan)
192.168.1.175 2c:f0:5d:c9:12:a9 (Unknown)
192.168.1.190 c2:f9:01:dd:eb:95 (Unknown)
3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 2 hosts scanned in 4.221 seconds (0.47 hosts/sec). 2 responded
我还可以 ping 新地址:
pi@retropie:~ $ ping 192.168.1.190
PING 192.168.1.190 (192.168.1.190) 56(84) bytes of data.
64 bytes from 192.168.1.190: icmp_seq=1 ttl=64 time=25.3 ms
64 bytes from 192.168.1.190: icmp_seq=2 ttl=64 time=13.5 ms
64 bytes from 192.168.1.190: icmp_seq=3 ttl=64 time=10.5 ms
^C
--- 192.168.1.190 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6ms
rtt min/avg/max/mdev = 10.520/16.424/25.270/6.371 ms