Ubuntu 22.04双网卡同静态IP的Netplan配置诉求:实现无线/以太网独立联网
Ubuntu 22.04双网卡同静态IP的Netplan配置诉求:实现无线/以太网独立联网
嘿,这个场景我之前帮朋友处理过——同一IP跨双网卡切换办公/家庭网络,核心问题是默认路由冲突+ARP地址冲突,咱们一步步来解决:
第一步:解决同IP双网卡的ARP冲突问题
因为两个网卡都用192.168.80.111/24,同一子网里的设备会收到两个不同MAC对应同一个IP的ARP响应,直接导致网络混乱。咱们需要给每个网卡设置sysctl参数来规避这个问题:
创建一个sysctl配置文件,比如/etc/sysctl.d/99-dual-nic-arp.conf,写入以下内容:
# 让网卡只响应目标IP是自身主IP的ARP请求 net.ipv4.conf.enp3s0.arp_ignore = 1 net.ipv4.conf.wlp3s0.arp_ignore = 1 # 让网卡只对外宣告自身主IP的ARP信息 net.ipv4.conf.enp3s0.arp_announce = 2 net.ipv4.conf.wlp3s0.arp_announce = 2 # 全局生效(可选,但确保所有接口都遵循规则) net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
然后加载配置:
sudo sysctl --system
第二步:修改Netplan配置,实现策略路由
你的现有配置里两个网卡都加了默认路由,系统无法判断优先走哪条,所以咱们给每个网卡分配独立的路由表,用路由规则绑定网卡和对应的路由表:
编辑你的Netplan配置文件(通常是/etc/netplan/00-installer-config.yaml或自定义yaml文件),替换成以下内容:
network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: false dhcp6: false optional: true addresses: - 192.168.80.111/24 # 为以太网分配专属路由表(表号200,自定义未占用的编号即可) routes: - to: default via: 192.168.80.1 table: 200 # 路由规则:从enp3s0发出的流量强制用表200 routing-rules: - from: 192.168.80.111 iif: enp3s0 table: 200 priority: 100 nameservers: addresses: - 55.11.22.33 - 55.11.22.34 wifis: wlp3s0: dhcp4: false dhcp6: false optional: true addresses: - 192.168.80.111/24 nameservers: addresses: - 192.168.80.32 access-points: "wifi_conn": password: "passconn" # 为无线分配专属路由表(表号201) routes: - to: default via: 192.168.80.32 table: 201 # 路由规则:从wlp3s0发出的流量强制用表201 routing-rules: - from: 192.168.80.111 iif: wlp3s0 table: 201 priority: 101
配置说明:
- 每个网卡对应独立路由表(200和201,只要是1-252之间未被占用的编号都可以)
routing-rules实现了流量绑定:从以太网发的请求走办公网关,从无线发的请求走家庭网关,互不干扰- 优先级
priority数字越小优先级越高,这里两个规则优先级接近,不影响正常使用,因为是绑定到不同网卡的
第三步:应用配置并测试
先验证配置文件语法是否正确:
sudo netplan generate
如果没有报错,就应用配置:
sudo netplan apply
现在可以分别测试两种场景:
- 只插以太网(办公室):执行
ip route get 8.8.8.8,输出应该显示走enp3s0到192.168.80.1 - 只连无线(家里):同样执行
ip route get 8.8.8.8,输出应该显示走wlp3s0到192.168.80.32
如果两个网卡同时开启,系统会自动根据流量发起的网卡选择对应路由,不会出现冲突。
备注:内容来源于stack exchange,提问作者llesh
相关产品推荐
相关产品推荐

