本文讲述使用 vps 搭建 openvpn,以及在 Gentoo 中使用 chnroutes 修改路由表,将国内 ip 的访问重新指定为非 vpn 线路。
条件
服务器为支持 Tun/Tap 的 vps: 我自己的 Directspace 的 vps,默认是没有开启的,需发 Tk 开启。免费的 AWS EC2 是默认开启了的。我这里的 vps 安装的操作系统为 Debian。
客户端为 Linux:我用的为 Gentoo,其他发行版的脚本和启动 openvpn 的方式可能会不一样
在 vps 中安装与配置 openvpn 服务器
安装 openvpn 软件,很简单:
生产服务器证书:
在 ./build-key-server server 和 ./build-key client1 两步时会询问是否签名,回答是,如下,其他使用默认即可:
好了,此时,在 /etc/openvpn/keys 目录下面就有了服务器和客户端所需的证书
下面修改服务器配置文件:/etc/openvpn/server.conf,我只提取有用部分:
一些注释都在上面了。然后启动 openvpn 服务器了
服务器上面还有最后两件事情:打开路由转发选项和配置 SNAT 规则
打开路由转发:修改 /etc/sysctl.conf 文件,将 net.ipv4.ip_forward=1 前面的注释去掉
然后执行命令:
最后设置 MASQUERADE 规则,将 10.8.0.0 网段过来的数据包转发出去后都将源地址修改为本机的 IP 地址,以使回复包能够正确的回到 vps 上。命令:
其中 eth0 要改为 vps 上面的网络接口名称,比如在 Directspace 上面就为 venet0;
当然这样只是当前生效,vps 重启之后还得重新配置 MASQUERADE 规则,可以使用如下语句将当前的 iptables 规则保存起来,然后在开机的时候加载
在 /etc/rc.loacl 中加入如下语句:
好了,服务器配置就完成了
在 Gentoo 下配置 openvpn 客户端
首先同样为安装 openvpn 软件,我这里是 Gentoo,你需要使用你用的发行版的包管理安装
安装 openresolv 是为了需要 resolvconf 程序,用于修改 dns 配置的,其他发行版可能不太一样
安装 iproute2 是为了获得 ip 程序,在修改路由时会使用到。
客户端需要使用在配置服务器端时生成的 key,需要如下三个文件:
同样,我这里也放到了 /etc/openvpn/keys 目录
然后配置 /etc/openvpn/client.conf
创建启动脚本
然后使用如下命令启动即可
但是,这样启动之后,所有的流量都回走 vpn,因此访问国内资源时很慢,且有可能会有限制,所以接下来就需要使用 chnroutes 的方法将访问国内 ip 的路由修改为非 vpn 的线路
下载 chnroutes.py 文件,然后执行
之后,目录下面就会多出两个文件:
然后将这两个文件拷贝到 /etc/openvpn/ 目录并改名,同时加上可执行权限:
Gentoo 下面会在 vpn 启动和停止的时候自动调用上面两个脚本。这时再运行
过不一会儿,使用 ip 命令查看路由表信息就可以看到国内的 ip 都走了非 vpn 的线路
好了,现在可以打开 Youtube 看下视频了,AWS EC2 的免费 vpn 速度可以到 400K,已经很不错了,不过流量每月只有 30G :)