DarkNode

Life, the Universe and Everything

OS X 下的科学上网完整配置方案

本文发表于:
最后修改于:
分类:network
合计信息量:4.26kb

相关说明

本方案的基本架构如下:

使用 Pcap_DNSProxy 提供最佳的 DNS 查询结果,通过 shad­ow­socks-libev 提供顺畅的网络连接,通过 polipo 将 socks5 代理转换为兼容性更好的 http 代理并提供一个本地 http 服务器,利用 Mono_Pac 生成适宜的 Pac 文件并用 polipo 的本地 http 服务器来 host。

本方案使用的所有程序均为开源程序,均不对除本机外的设备提供网络服务,以避免各种潜在威胁。

本地 DNS 的配置

首先通过 Home­brew 安装 Pcap_DNSProxy 并修改其配置文件中的如下三项:

$ brew in­stall pcap_dnsproxy
$ vi /usr/lo­cal/etc/pcap_DNSproxy/Con­fig.ini
[Lis­ten]
Op­er­a­tion Mode = Proxy
[Lo­cal DNS]
Lo­cal Main = 1
Lo­cal Rout­ing = 1

修改 Op­er­a­tion Mode 为 Proxy 以确保其只为本机提供代理域名解析请求服务,修改 Lo­cal MainLo­cal Rout­ing 为 1 以确保国内网站获得更好的 CDN 解析结果。

设置开机启动:

$ sudo cp -fv /usr/lo­cal/opt/pcap_dnsproxy/*.plist /Li­brary/Launch­Dae­mons
$ sudo chown root /Li­brary/Launch­Dae­mons/home­brew.mxcl.pcap_dnsproxy.plist
$ launchctl load /Li­brary/Launch­Dae­mons/home­brew.mxcl.pcap_dnsproxy.plist

进入系统偏好设置-网络-高级-DNS,将 DNS 服务器设置为 127.0.0.1 即可。

本地网络连接的配置

首先通过 Home­brew 安装 shad­ow­socks-libev 并修改配置文件,在其中加入 lo­cal 项,以确保其只为本机提供服务:

$ brew in­stall shad­ow­socks-libev
$ vi /usr/lo­cal/etc/shad­ow­socks-libev.json
{
    "server":"服务器地址",
    "server_port":服务器端口,
    "lo­cal":"lo­cal­host",
    "lo­cal_port":1080,
    "pass­word":"服务器密码",
    "time­out":服务器超时时间,
    "method":"服务器加密方式"
}

设置开机启动:

$ ln -sfv /usr/lo­cal/opt/shad­ow­socks-libev/*.plist ~/Li­brary/Laun­chA­gents
$ launchctl load ~/Li­brary/Laun­chA­gents/home­brew.mxcl.shad­ow­socks-libev.plist

随后通过 Home­brew 安装 polipo 并在~/.polipo 新建配置文件:

$ brew in­stall polipo
$ vi ~/.polipo
socks­Par­ent­Proxy = "127.0.0.1:1080"
sock­sProx­y­Type = "socks5"
prox­yAd­dress = "127.0.0.1"
prox­y­Port = 8080
lo­cal­Doc­u­men­t­Root = "~/.www/"
dnsName­Server = "127.0.0.1"
dnsUseGeth­ost­by­name = false
dns­Max­Time­out = 1s
dns­QueryIPv6 = false
cacheIs­Shared = true
diskCache­Root = ""
dis­able­Via = true
cen­sor­Ref­erer = false
tun­nelAl­lowed­Ports = 1-65535
dis­able­Lo­cal­In­ter­face = true

设置开机启动:

$ ln -sfv /usr/lo­cal/opt/polipo/*.plist ~/Li­brary/Laun­chA­gents
$ launchctl load ~/Li­brary/Laun­chA­gents/home­brew.mxcl.polipo.plist

创建~/.www 目录,并使用 Mono_Pac 项目生成符合自己需求的 Pac 文件:

$ mkdir ~/.www
$ git clone https://github.com/black­gear/mono_pac.git
$ cd ./src
$ python ./make.py -p "PROXY 127.0.0.1:8080" -o ~/.www/proxy.pac

进入系统偏好设置-网络-高级-代理,将自动代理配置 URL 设置为 http://127.0.0.1:8080/proxy.pac 使 GUI 程序通过 Pac 决定是否走代理。

修改~/.bash_pro­file,加入与代理有关的环境变量使得命令行程序通过代理连接网络:

$ vi ~/.bash_pro­file
ex­port all_proxy="http://127.0.0.1:8080"
ex­port http_proxy=$all_proxy
ex­port https_proxy=$all_proxy
ex­port ftp_proxy=$all_proxy
ex­port rsync_proxy=$all_proxy

通过 Home­brew 安装 so­cat 并修改~/.ssh/con­fig,使 ssh 连接通过代理进行连接:

$ brew in­stall so­cat
$ vi ~/.ssh/con­fig
Host *
    Server­AliveIn­ter­val 5
    Server­Alive­Count­Max 3
    Con­trol­Mas­ter auto
    Con­trol­Path ~/.ssh/%h-%p-%r
    Con­trolPer­sist yes
    Prox­y­Command /usr/lo­cal/bin/so­cat - proxy:lo­cal­host:%h:%p

修改~/.git­con­fig 使 git 通过代理进行连接:

$ cat ~/.git­con­fig 
[https]
    proxy = 127.0.0.1:8080
[http]
    proxy = 127.0.0.1:8080