ubuntu 双网卡 不同网段 广播 (收集)

UDP广播地址:

全网广播地址: 255.255.255.255
组网广播地址: 192.168.0.255 //取决于你的网段

网段过滤
tcpdump -i eth1 net 192.168 and broadcast
tcpdump -i eth1 src net 192.168 and broadcast
tcpdump -i eth1 dst net 192.168 and broadcast

端口过滤
tcpdump port 22
tcpdump src port 22
tcpdump dst port 22

端口范围过滤
tcpdump portrange 22-125

ubuntu添加静态路由永久生效

route add default gw 169.254.0.254
#将路由添加到配置文件,永久生效
route add default gw 10.1.1.1254

双网卡下使用udp带来的问题

今天在工程人员现场布置程序时,出了一个疑难问题,客户端发送的UDP包服务程序能收到,但是服务程序收到的包的ip地址很随机,造成在生成唯一ID的时候出现问题,
经过仔细排查,终于发现是双网卡的问题。因为在绑定socket时并没有指定IP(客户端上是双网卡),客户端发送UDP包时,没有指定使用哪个网卡,造成了终端收不到的包的ip地址不固定,所以使用UDP时如果不能肯定是单网卡,一定要绑定IP。(可以通过遍历系统内部网卡的方式)

多网卡指定网卡进行UDP通信(添加静态路由解决双网卡问题 )全记录

https://blog.youkuaiyun.com/Scarlett_OHara/article/details/88556798

1

1)多网卡广播时,每个网卡都绑定一次,广播一次,才能保证网络里都能收到该广播消息

m_Socket = socket( AF_INET, SOCK_DGRAM, 0 );
 
     // set a socket option
     BOOL  bBroadcast = TRUE;
     nResult = setsockopt(    m_Socket, 
                             SOL_SOCKET,
                             SO_BROADCAST,
                             ( char *)&bBroadcast,
                             sizeof (  BOOL  )
                         );
m_saUdpCli.sin_family        = AF_INET;
     m_saUdpCli.sin_addr.s_addr    = inet_addr(m_szLocalHostIP); //这个IP就是我选择要发送广播包的网卡的IP
     m_saUdpCli.sin_port            = htons( UDP_UDAP_PORT );
nResult = bind( m_Socket, (SOCKADDR *)&m_saUdpCli,  sizeof (SOCKADDR_IN) );


2

如果是bind了0.0.0.0地址的某个端口接收组播数据

此时,需要手动建立路由从接收数据的网卡到组播地址

设备ip 10.33.3.34

eth0 111.0.1.2

eth1 10.33.3.33

通过抓包可以看到只有10.33.3.34到组播地址239.244.44.44的数据,没有239.244.44.44到10.33.3.33的数据。

命令行执行 route add 239.244.44.44 10.33.3.33解决问题

### 配置Linux Ubuntu双网卡在同一网段共存 对于Ubuntu Linux系统中的双网卡配置,在同一网段中共存的关键在于正确设置IP地址分配策略以及路由规则,防止冲突并确保通信顺畅。当两块网卡接入相同子网时,应避免自动获取相同的IP地址范围造成混乱。 #### 修改网络接口配置文件 编辑`/etc/netplan/*.yaml` 文件(具体名称可能不同),以适应特定环境需求: ```bash network: version: 2 ethernets: enp0s3: dhcp4: no addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] enp0s8: dhcp4: no addresses: - 192.168.1.101/24 ``` 上述示例中,假设两个物理网口分别为`enp0s3` 和 `enp0s8` ,两者被赋予了相邻但不重复的静态IP地址[^1]。 #### 应用Netplan配置变更 保存修改后的YAML文件,并执行命令应用新的网络配置: ```bash sudo netplan apply ``` 这一步骤将使新设定生效,允许操作系统识别更新过的网络参数。 #### 设置永久ARP忽略选项 为了避免潜在的MAC地址冲突问题,可以通过调整内核参数来控制系统的ARP行为。创建或编辑 `/etc/sysctl.d/50-custom.conf` 文件加入如下内容: ```bash net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.enp0s3.arp_announce = 2 net.ipv4.conf.enp0s8.arp_announce = 2 ``` 之后运行 sysctl 命令加载这些更改: ```bash sudo sysctl --system ``` 此操作有助于减少因多路径冗余带来的不确定性,提高稳定性[^2]。 #### 测试连通性 完成以上步骤后,建议使用 ping 工具测试各设备间的可达性和响应时间;同时利用 iperf 或其他工具评估带宽性能指标,验证是否达到预期效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值