在MacOS上同时使用有线和无线网络

Usually we don’t often need to use Cable/Ethernet and Wifi on a computer simultaneously. 平时在家里很少需要同时使用有线和无线网络,一般只需要一个就好了,不过在项目上就经常需要这样了,因为要通过有线网络连到企业内网,同时用无线连到外网查资料。

这种情况在windows下的解决方案就是一句话,假设内网的ip都是10开头的,那么打开cmd,输入route add -p 10.0.0.0 mask 255.0.0.0 10.90.84.1(指定所有的10.0.0.0/4的访问请求都从有线网络的网关如10.90.84.1走,其余则假定为外网请求,从无线走,其中-p是指permanent,永久添加这条路由)。

不过,这次我带到项目上干活的是一台macos,这实在不是一台适合干活的机器。。。不过为了最大限度避免使用boot camp装双启动进windows干活,我还是摸索了一下在macos上实现同时使用有线和无线网络的方案,把过程记录下来。操作系统是OSX 10.7 lion

首先,我连上了wifi,这样就可以上外网了,但是当我插入网线时,外网立即断开了。这说明ethernet的优先级高于wifi,需要调整网络的优先级,确保wifi优先,方法是在系统设置-网络页面,左侧的网络列表下面的齿轮键,点击选择设定服务顺序,在弹出窗口中拖拽即可。

这时插上网线外网也不会断开了,那么第二步就是执行windows上的route add命令了,这里有两个问题,一个是,macos上的route命令的参数和格式与windows上完全不同,没法复制过来写,另一个是,macos上进行添加route的操作必须要以root用户的身份进行,sudo都不可以,而macos的root用户是默认关闭的,需要手工打开。

对于第一个问题,macos上可用的命令是:
route -n add 10.0.0.0/4 10.90.84.1
这里的 10.0.0.0/4 和 windows上的 10.0.0.0 mask 255.0.0.0 是一个意思,如果对这个不明白的,就不解释了。

对于第二个问题,用英文搜索一下就可以了(enable root macos 别用中文搜索,浪费时间),官方网站上是有指南的:Enabling and using the “root” user in Mac OS X

用root用户添加指令后,就可以同时访问外网和内网了。这时你会遇到第三个问题,就是macos上添加route的命令没有-p permanent的参数,下次重启就无效了,这个问题并不是很大,因为macos用户其实很少需要重启,不过也是有解决方案的,就是把这句指令添加到用户的启动脚本里面。具体的方式在weiphone bbs的一个帖子里有说明,摘抄如下:

永久解决方案可以添加一个自启动项来解决:(注意,其中vi是编辑器命令,进入编辑模式按”i”,输入完毕后按“ESC”,然后输入”:x”保存退出)
cd /System/Library/StartupItems/

sudo mkdir AddRoutes; cd AddRoutes

sudo vi AddRoutes

!/bin/sh
# Set up static routing tables
. /etc/rc.common
StartService ()
{
ConsoleMessage “Adding Static Routing Tables”
route add 192.168.0.0/16 172.16.254.254 #同暂时方案中的命令
}
StopService ()
{
return 0
}
RestartService ()
{
return 0
}
RunService “$1”

sudo vi StartupParameters.plist

{
Description = “Add static routing tables”;
Provides = (“AddRoutes”);
Requires = (“Network”);
OrderPreference = “None”;
}

sudo chmod 755 *

到这里就可以结束这篇科普文章了。不过再附送个小tips:如何解决macos上的vmware windowsxp虚拟机上网的问题呢?我们一般给虚拟机设置的网络是Bridge桥接模式,只能从wifi/ethernet中选择一个共享给虚拟机(或者自动切换),如何能把macos上的内外网都共享给虚拟机呢?这一点我本来没有抱希望(本来都打算macos上外网,虚拟机只上内网了),后来惊奇地发现,只要把vmware的网络设置修改成NAT模式,就可以神奇地把wifi/ethernet同时共享给windows虚拟机,这时候虽然虚拟机只有一个网络连接且ip是192.168开头的,但是却能同时访问外网和内网哦!

4 Replies to “在MacOS上同时使用有线和无线网络”

Leave a Reply