因为上Google的需要,不得不翻墙。经常是找到一种方法用一段时间然后用不了,然后又不得不大量地百度科学上网的方法。对于像我这样健忘的人来说与其不停地“重蹈覆辙”,不如系统性地总结一下科学上网的方法。常见的翻墙方法基本上都是基于代理的方法的,不用代理的话大概就是修改DNS了。
Table of Contents
SSH转发
通过ssh翻墙最方便,稳定性也还可以。
- 首先设置好SSH转发
- Windows下:
可以使用Tunnelier。选择 Services 选项,将 SOCKS / HTTP Proxy Forwarding 设置为Enabled。 Listen Interface 设置为本机地址(如127.0.0.1), Listen Port 任取。 - Linux下:
在使用ssh命令连接主机的时候加上-D:\选项。
- 在浏览器中设置选择刚才设置好的代理:
选择SOCKSV5 ,地址填127.0.0.1,端口号填刚才确定的端口号,即可开始使用ssh代理上网。
基于PPTP协议的VPN
貌似也有基于L2TP协议的VPN,不过当初尝试时按照别人的教程只在PPTP这种协议上试成功了,所以这里就只写这一种。点此阅读原教程,或者阅读下面的转载。
准备工作
启用TUN-TAP
安装PPTP服务
apt-get update
apt-get install pptpd
配置PPTP服务
- 设置localip和remoteip
/etc/pptpd.conf:
localip 192.168.0.1
#remoteip 192.168.0.234-238, 192.168.0.245
#or
#localip 192.168.0.234-238, 192.168.0.245
#remoteip 192.168.1.234-238, 192.168.1.245
去掉前两行或者最后两行的”#”以启用
- 配置dns服务器
在etc/ppp/pptpd-options 中设置dns服务器
ms-dns 8.8.8.8
#ms-dns 8.8.4.4
根据需要去掉其中一行的”#”
- 添加用户
/etc/ppp/chap-secrets:
client server secret IP addresses
Robin pptpd abcd *
* 表示用户Robin的IP地址是任意给的.
- 设置iptable
/etc/sysctl.conf:
net.ipv4.ip_forward=1
去掉这一行的”#”以启用
sysctl -p # load the new sysctl.conf
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o venet0 -j MASQUERADE
iptables -F FORWARD
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -p gre -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- 启用或者重启服务
/etc/init.d/pptpd restart
或者
service pptpd restart
- 如果有时候用着用着这个vpn不工作了,那么照上面步骤再重来一次。我一般都是重复第4、5步。
基于ShadowSocks的VPN
ShadowSocks的作者是天朝的女程序员cloudwindy。
安装
shadowsocks.org说的是通过pip安装,Ubuntu16.04直接apt就可以安装了。
使用
- 服务器端(可以访问到外网的那一端)
服务器端使用ssserver命令,例子:
ssserver -p 12345 -k 23456 -m "aes-256-cfb"
完整的选项列表以及各选项的具体含义可以查看命令的usage。
- 客户端(本地端)
本地端使用sslocal命令,例子:
sslocal -s your.domain.name -p 12345 -k 23456 -l 34567 -m "aes-256-cfb"
-l选项表示的是本地监听端口。
最后将浏览器或系统代理设置为使用本地地址和此端口的SOCKS5代理。
可以配合nohup命令让服务器端或者客户端一直在后台跑,以及可以把ShadowSocks的各种选项都存在配置文件里,然后使用-c
选项指定配置文件。比如客户端配置文件config.json如下:
{
"server":"your.server.domain",
"server_port":12345,
"local_port":34567,
"password":"your-pass-word",
"timeout":3000,
"method":"aes-256-cfb"
}
然后每次开机后只需要执行下面的命令:
nohup sslocal -c config.json &
如果连这个都还觉得麻烦的话,可以将这句话加到机器开机运行的脚本里面去。
SwitchyOmega
SwitchyOmega是Chrome浏览器上的一个插件,可以用来管理各种代理。这个插件最方便的地方在于其auto switch情景模式,可以设置规则让浏览器在访问不同的网站时使用不同的服务器,而且这个规则列表可以来自于网上、可以在线更新(只需要提供该规则列表的url)。
一个针对GFW的规则列表网址(规则列表格式:AutoProxy):https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt。
用Openvpn搭建vpn
难以想象,以前居然连vpn和proxy的区别都没搞明白。简而言之,使用proxy时应用是需要知道存在proxy这个东西的,而使用vpn时应用是不知道vpn的存在的。
按照这篇来自于Digital Ocean的教程可以搭建OpenVpn以及生成相应的客户端文件。
WireGuard
- 先apt安装WireGuard
- 在服务器与客户端上分别生成密钥
wg genkey > private
- 在服务器端与客户端分别添加wg interface
ip link add dev wg0 type wireguard
- 设置wg interface的ip地址 客户端:
ip address add dev wg0 192.168.2.1/24
服务器端:
ip address add dev wg0 192.168.2.2/24
- 设置服务器端与客户段各自的私钥
wg set wg0 private-key ./private
- 在服务器端与客户端启动wg interface
ip link set wg0 up
- 在服务器端与客户端分别执行
wg
可以看到各自的公玥和监听端口 - 在客户端添加
近期评论