Ubuntu 系统有两块网卡,同时接入联通移动两家宽带,联通有公网IPv4,上行40m,移动只有公网IPv6,但上行带宽有100m。我们想让其中一块网卡只提供联通IPv4接入(利用其公网IPv4地址),另一块网卡只提供移动IPv6接入(利用其100m高速上行带宽)。
关闭IPv4比较简单,只要在 Ubuntu 系统自带的网络配置工具 netplan 的配置文件里使用“dhcp4: false”参数,接口就获取不到IPv4地址了,或者设置静态IPv4地址,同时不设置默认路由或网关(“gateway4”参数已废弃),接口也就无法接入Internet了。
对于IPv6来说,只设置“dhcp6: false”是不够的,因为接口还可以通过路由器通告RA,以无状态SLAAC方式自动配置IPv6地址,导致IPv6关不掉,系统产生两个IPv6默认网关,造成困扰。
其实netplan还有一个很有用的参数:“accept-ra”,在netplan配置文件的相应接口下,添加如下参数:
accept-ra: false
这样,该接口就无法通过SLAAC方式获得IPv6地址和默认路由了,配合 “dhcp6: false”使用效果更佳。
PS:之前一直是通过在/etc/sysctl.conf中加入“net.ipv6.conf.eno1.disable_ipv6=1”的方式关闭某块网卡的IPv6功能,但这个配置在重启系统后会失效,因此还需配合开机自启动脚本,系统运行途中遇到重启网络服务还是会失效,可靠性不高。