mac os 如何内外(网)兼具

工作中会有各种各样的内网存在,比如公安内网,银行内网等等,互联网我们则称为外网。由于经常碰到即需要内网环境又需要通过外网查询资料的情形,如果不加配置,只能繁琐地手动切换。本篇通过添加路由的方法来解决这个问题,与大家共享。

内网环境示例

假定所有的内网ip以36开头,内网网关假设为36.45.98.254。无线连接为外网,有线连接为内网。

windows下的简单操作

打开cmd,输入命令即可。

route add -p 36.0.0.0 mask 255.0.0.0 36.45.98.254

在路由中指定所有的36.0.0.0/4的请求都从内网的网关36.45.98.254通过,其余的默认为外网请求。参数p指永久添加这条路由。

mac os下的操作

1.调整无线和有线网的优先级,改为无线优先

当我连上Wi-Fi时访问外网没问题,插上内网网线,外网中断,说明有线优先,需要调整。


mac网络优先设置

系统便好设置-网络,网络列表下的 ⚙️ 按钮,通过拖拽调整wifi优先,设置完毕,别忘了点击应用按钮。

2.添加路由

sudo su     //获得root身份
route -n add 36.0.0.0/4 36.45.98.254  //类似于windows的命令

3.如何设置为永久添加

相比windows下和mac os下的命令,大家会发现mac下没有参数p来设定路由永久生效。这样一来,重启过后(后来实践,好像长时间休眠也失效了),设置就失效了,虽然mac用户一般不关机。
可以通过将指令添加到启动项的方式解决这个问题。前面的操作完成后已经可以内外兼具了,这一步不需要的可以跳过去。

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 -n add 36.0.0.0/4 36.45.98.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 *

有心的朋友也可以通过这个示例学习下如何添加mac启动项。

此步未验证。

参考文章:http://www.steedguo.com/2012/02/18/use_wifi_and_cable_together_on_macos/

Paypal:876670218@qq.com