基于openvpn的校园网ipv6免流量方案
Table of Contents
*2017.6.23 重新更新了一下。包含具体步骤,和对使用bandwagonhost同学的建议。
0.引入及相关阅读
几个月前,我没事瞎鼓捣,炮制了这么一个东西
https://steinslab.io/archives/168
还有一个部署自己宿舍网络的一个log
https://steinslab.io/archives/218
本来这两个文章当初只是想着和本校同学、小圈子间交流交流,传阅着看一看。出乎意料的是,这两篇文章被google检索后,有不少同学过来询问实施方法。
事实上,在这个学期,我已经弃用了这种方法。因为我发现原文有若干令人不满意的地方
- 使用VPN,可以部署在我的树莓派上
- 原方案中,udp转发会遇到若干问题,导致如steam无法登陆
学校于这个学期升级了网络系统,至此pppoe拨号和校内动态ip上网相互独立,路由器刷openwrt之前无法正常工作
关于ipv6校园网免流我已经写了一系列的经验文章。
目前我的宿舍正在使用基于树莓派的无线路由器。详见
https://steinslab.io/archives/1211
https://steinslab.io/archives/1103
1.准备
1.1 ipv6环境
校园网ipv6免流量的原理参见:https://steinslab.io/archives/168
首先中的首先,请确保你自己有ipv6接入,并且确认你的ipv6流量不计费。
关于天津大学ipv6的使用,可以看我的指南文章。
https://steinslab.io/archives/441
1.2 准备vps
需要一个有ipv6的VPS来自建openvpn服务端。
推荐使用的一些主机商
- DigitalOcean:https://digitalocean.com(含aff,介意自行开网页)
- digitalocean 5$每月的配置足够,口碑很好。
实测ipv6新加坡节点是直连,延迟只有80ms(没错,ipv4ipv6走的节点线路不一样)目前不是了 - bandwagonhost:https://bandwagonhost.com(含aff,介意自行开网页)人称“搬瓦工”,以低价稳定出名。(注意搬瓦工的后台一键openvpn并没有写ipv6转发,所以不符合需求,需要自行安装)(使用bandwagonhost需要注意一些事项,请参看该章节。)
2.openvpn服务端
接下来在自己租用的服务器上架设openvpn服务端。
细心的人可能看到了,在bandwagonhost的后台有个openvpn一键搭建。然而,这个一键搭建并没有直接配置好的服务端没有进行ipv6相关的设置,需要我们自行搭建。
以下操作步骤以CentOS6.6为例。
基础:需要操作基本的linux ssh连接。ps:使用putty或者xshell等软件都可以。
这一步是操作一切服务器的基础,基本的使用毫无难度,不要一看到自己不熟悉的东西就放弃了。
1.连接服务器,并登录,能够以root权限进行操作。
搭建openvpn的教程已经有许多人做了优良教程。以下命令仅为个人留存方便快捷使用,感谢楼主 power4342
下列命令直接取自 http://forum.hnubbs.com/thread-941252-1-1.html
#安装必要组件 yum -y install nano wget unzip gcc openssl openssl-devel lzo kernel-devel #使用新的epel源 wget wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm rpm -Uvh epel-release-6-8.noarch.rpm #安装openvpn yum -y install openvpn #easy-rsa wget https://github.com/OpenVPN/easy-rsa/archive/release/2.x.zip #解压,在ovpn目录下生成证书 unzip 2.x.zip cp -R easy-rsa-release-2.x/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa/ chmod -R 777 2.0 cd 2.0 #保存设置,生成证书 source ./vars ./clean-all ./build-ca server ./build-key-server server #生成客户端证书,“user1”即为证书名,可多次执行生成不同证书 ./build-key user1 ./build-key user2 #以此类推 #生成dh参数 ./build-dh #新建openvpn配置文件 nano /etc/openvpn/server.conf
服务端设置文件
port 10086 #可以使用自己指定的随机端口 proto udp6 #ipv6 udp连接 dev tun #采用tap或者tun方式 ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt #注意:此处4行为服务器端的各类证书和秘钥地址 cert /etc/openvpn/easy-rsa/2.0/keys/server.crt #此处4行改成自己openvpn的相应服务端地址 key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem server 10.8.0.0 255.255.255.0 #服务端内网地址和子网掩码,不必修改 push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" #推送dns push "dhcp-option DNS 8.8.4.4" client-to-client #允许客户端通信 keepalive 10 120 comp-lzo #压缩方式 persist-key persist-tun cipher AES-128-CBC verb 3
ctrl+x 保存。
2.下面继续配置服务器
nano /etc/sysctl.conf
在其中把找到该项并启用(改成1)(进入了文本编辑器)
net.ipv4.ip_forward = 1
3.使设置立即生效
sysctl -p
若此步骤报错
昨天鼓捣了几个小时,终于弄好了,用的是板瓦工的vps
就是中间遇到 bridge 那个错误的时候,用的是这几个命令
修复modprobe的:
代码如下 复制代码
rm -f /sbin/modprobe
ln -s /bin/true /sbin/modprobe
修复sysctl的:
代码如下 复制代码
rm -f /sbin/sysctl
ln -s /bin/true /sbin/sysctl
4.下面建立ipv6 的vpn ipv4的NAT转发(关键)
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
注意,这里的“eth0”是指服务器的网卡名称。对于使用bandwagonhost的同学,及其他基于openvz的服务器,请注意网卡名一般为venth0。
5.启动openvpn服务并加入自启动
service openvpn start chkconfig openvpn on
3.openvpn客户端
客户端的配置文件
client dev tun #tun proto udp6 #ipv6的udp连接 remote 2400:3687:0:d0::347:d001 10086 #这里改成自己服务器的ipv6地址,注意端口 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert user2.crt #crt和key文件路径,注意文件名,此处为和.ovpn配置文件同目录 key user2.key #同上 ns-cert-type server comp-lzo cipher AES-128-CBC verb 3
注意检查服务端和客户端配置文件相应。
windows客户端配置文件放置示例:
4.实测
最终来个本方案我的实测图。
服务器是digitalocean的新加坡节点,大家可以看到
早就没有这个速度了。
欢迎反馈,欢迎评论,也欢迎看看我其他的相关文章!