
举例我需要192.9.2.77192.9.2.78192.9.2.79同时给192.9.2.30发送udp单播报文。但我只有两台设备。方案一给一台 Linux 机器加多个 IP最简单实用在 Linux 上一张网卡可以挂多个 IP# 添加三个辅助 IP假设主 IP 是 192.9.2.100 sudo ip addr add 192.9.2.77/16 dev enp5s0 sudo ip addr add 192.9.2.78/16 dev enp5s0 sudo ip addr add 192.9.2.79/16 dev enp5s0这些ip可以在同一个网段吗可以的完全没问题。在 Linux 上一张网卡挂多个同一网段的 IP 是非常常见且合法的用法。你给出的例子主 IP192.9.2.100/24再加192.9.2.77/24、.78、.79就是典型的「单网卡多 IPIP Aliasing」场景。为什么可以Linux 的路由是基于目标网段的而不是基于源 IP。这几个 IP 都属于192.9.2.0/24所以它们共享同一条直连路由192.9.2.0/24 dev eth0内核不会因为「同网段有多个 IP」而报错每个 IP 都能独立被访问、独立作为源地址发包测试我在银河麒麟上执行上述命令然后执行ip addr7: enp5s0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 1c:83:41:d3:95:cf brd ff:ff:ff:ff:ff:ff inet 192.9.2.100/16 brd 192.9.255.255 scope global noprefixroute enp5s0 valid_lft forever preferred_lft forever inet 192.9.2.77/24 scope global enp5s0 valid_lft forever preferred_lft forever inet 192.9.2.78/24 scope global secondary enp5s0 valid_lft forever preferred_lft forever inet 192.9.2.79/24 scope global secondary enp5s0 valid_lft forever preferred_lft forever inet6 fe80::3a6:a183:3fea:af3e/64 scope link noprefixroute valid_lft forever preferred_lft forever刚才我配错了77/78/79三个ip的代码我配成3个255了我需要先把旧的删除# 删 /24 版本 sudo ip addr del 192.9.2.77/24 dev enp5s0 sudo ip addr del 192.9.2.78/24 dev enp5s0 sudo ip addr del 192.9.2.79/24 dev enp5s0又改了改这是新状态:ip addr7: enp5s0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 1c:83:41:d3:95:cf brd ff:ff:ff:ff:ff:ff inet 192.9.2.100/16 brd 192.9.255.255 scope global noprefixroute enp5s0 valid_lft forever preferred_lft forever inet 192.9.2.77/16 scope global secondary enp5s0 valid_lft forever preferred_lft forever inet 192.9.2.78/16 scope global secondary enp5s0 valid_lft forever preferred_lft forever inet 192.9.2.79/16 scope global secondary enp5s0 valid_lft forever preferred_lft forever inet6 fe80::3a6:a183:3fea:af3e/64 scope link noprefixroute valid_lft forever preferred_lft forever当前状态解读inet 192.9.2.100/16 brd 192.9.255.255 scope global noprefixroute enp5s0 ← 主 IP inet 192.9.2.77/16 scope global secondary enp5s0 ← 辅助 inet 192.9.2.78/16 scope global secondary enp5s0 ← 辅助 inet 192.9.2.79/16 scope global secondary enp5s0 ← 辅助掩码一致都是/16✅无重复 ✅.100是 primary其余是 secondary ✅网段192.9.0.0/16192.9.0.0~192.9.255.255广播192.9.255.255没有secondary字样的 primary主地址有secondary字样的 secondary辅助地址一张网卡可以有多个地址但 primary 通常只有一个准确说是每个网段一个 primary你这里同网段所以只有一个 primary。测试: 77,78,79同时接收数据模拟发送模拟接收继续测试模拟77,78,79发送报文192.9.2.24:6000接收Linux使用命令向某ip和端口发送udp报文1. 使用nc(netcat) —— 最常用# 交互模式连续发送 nc -u 192.168.1.100 12345 # 然后直接输入内容回车发送CtrlC 退出参数说明-u使用 UDP 协议我还需要指定本机的ip# OpenBSD netcat / nmap ncat 支持 -s 指定源IP nc -u -s 192.168.1.10 192.168.1.100 12345前提指定的源 IP 必须是本机已配置的网卡地址否则内核会报Cannot assign requested address。我试了下电脑重启后我配置的三个ip消失了重启后配置的 IP 消失几乎可以确定是因为你用的是ip addr add这类临时命令。这种配置只存在于内存中一旦重启或网络服务重载就会丢失。要让 IP 在重启后依然存在需要把配置写到系统能读取的持久化文件里。