Mac同时使用无线wifi和有线上网,解决内网外网一起访问的问题
最近到客户现场办公,遇到了一个问题,客户的环境在内网,需要使用网线链接,而且网络只能访问客户环境,无法上外网,这就导致非常不方便。经过一番查找和尝试,发现原来可以通过网络设置和路由设置,实现内网外网同时访问。
场景和方案
首先说一下目前的情况:
- 客户的环境是内网环境,需要访问的 ip 网段为 10.224.xx.xx
- 同时插入网线和开启 Wi-Fi 的时候,发现 Wi-Fi 根本没起作用,只能访问内网,无法访问外网
方案:
- 通过网络偏好设置,自定义网络使用的先后顺序,优先使用 Wi-Fi 上网
- 设置 route 给内网环境的网段添加指定路由,使得内网网段的访问走网线而不是 Wi-Fi
- 设置定时任务,解决每次重新插入网线需要重新添加路由的问题
网络偏好设置
首先进入网络偏好设置,拿到网线的路由器 IP 信息备用
然后点击网络列表下面的...点击“设定服务顺序”,按照需要将网外(这里是Wi-Fi)调整到最前面
到这里,网络设置就 OK 了,此时可以发现电脑可以正常访问外网了,但是内网是不能访问的,这是正常的,因为内网目前走的是 Wi-Fi,肯定无法走通。
添加路由
内网需要的是走网线,怎么走?当然是配置路由转发。
首先我们要知道内网需要访问的网段,还有网线的路由器 IP,前面已经都收集到了,这个时候我们只需要添加一条路由配置即可(使用 root 执行),例如:
shell
sudo route add 10.224.xx.xx/24 10.225.xx.xx
其中 10.224.xx.xx 是 内网网段,10.225.xx.xx 是网线连接的路由器 ip
添加完成之后,再去 ping 一下内网 ip 就会发现已经可以通了,此时大功告成。
查询和删除路由
bash
#查询路由
route get 10.224.xx.xx/24
#删除路由
sudo route delete 10.224.xx.xx/24
定时任务
虽然上面我们已经完成了内网外网同时访问,但是有个问题,就是当网线拔出来,再插进去,我们设置的路由就失效了,就需要重新添加路由,所以我添加了一个定时任务,定期检查内网是否通。
脚本很简单:
shell
#!/bin/bash
# 定期添加路由,避免网线拔出来要重新设置
destination=10.224.xx.xx/24
gateway=10.225.xx.xx
ip=10.224.xx.xx
function echo_exit() {
echo $*
exit 1
}
[ "$(id -u)" -ne 0 ] && echo_exit "请使用root用户执行脚本"
ping -c 3 -n ${ip}
if [ $? -ne 0 ]; then
echo 'nok'
echo "route add ${destination} ${gateway}"
route add ${destination} ${gateway}
echo 'set route ok'
fi