最近使用了 surge for mac 科学上网,截至目前版本1.0.6,仍需手动设置系统的网络代理,即第一次启动 surge、关闭 surge 时,都需要设置、去掉代理,得手工切换。
苹果系统提供了命令行下的工具来支持这个事情: man networksetup
查看网络服务
查看当前系统有哪些网络服务(networkservice),以及确定当前系统使用的是哪个
$ networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Wi-Fi
VPN (L2TP)
我用的是Wi-Fi
,后续的 dns 设置、网络代理设置,都默认对它生效。
设置代理
surge 默认监听地址是127.0.0.1:6152
。
$ networksetup -setwebproxy 'Wi-Fi' 127.0.0.1 6152 \
&& networksetup -setsecurewebproxy 'Wi-Fi' 127.0.0.1 6152
查看代理
$ networksetup -getwebproxy 'Wi-Fi'
Enabled: Yes
Server: 127.0.0.1
Port: 6152
Authenticated Proxy Enabled: 0
综上,可在 bash_profile 中设置两个 alias 方便变更网络代理:
# for wifi proxy
alias setproxy="networksetup -setwebproxy 'Wi-Fi' 127.0.0.1 6152 \
&& networksetup -setsecurewebproxy 'Wi-Fi' 127.0.0.1 6152 \
&& networksetup -getwebproxy 'Wi-Fi'"
alias clearproxy="networksetup -setwebproxystate 'Wi-Fi' off \
&& networksetup -setsecurewebproxystate 'Wi-Fi' off \
&& networksetup -getwebproxy 'Wi-Fi'"
设置 dns
$ networksetup -setdnsservers 'Wi-Fi' 114.114.114.114
使用 dns 114.114.114.114
仅为演示,这里并没有推荐之意。
查看 dns
$ networksetup -getdnsservers 'Wi-Fi'
综上,也可在 bash_profile 中设置三个 alias 方便 dns 变更:
alias cleardns="networksetup -setdnsservers 'Wi-Fi' empty"
alias setdns="networksetup -setdnsservers 'Wi-Fi' 114.114.114.114"
alias getdns="networksetup -getdnsservers 'Wi-Fi'"
– EOF –