为了游戏
很多人安装OpenVPN是为了科学上网,还有的是为了企业办公,我就厉害了,我是为了游戏联机。你可能就问了这什么游戏连远程联机都不支持?我,我玩的是个只能局域网联机的小游戏……(为了随时随地能和女朋友一起玩……)
替代方案——蒲公英VPN
这个东西是著名的花生壳公司的产品,免费用户可以同时登录三个设备。三个,对我来说够用了,可惜,缺点也很明显。
- 延时高达200ms以上
- 连接不稳定,经常出现连不上的情况
不知为何安卓模拟器上面始终连不上
安装OpenVPN
于是我毅然选择安装在自己的服务器上。
同样不止为何,大家似乎很多都是用CentOS安装,而不是我喜爱的Ubuntu。于是我随便找的那个一键安装包废了。不得不自己动手。伟大的毛主席说过,自己动手,丰衣足食。我是个丰衣足食的好孩子。简易安装
sudo apt-get install openssl libssl-dev
sudo apt-get install lzop
sudo apt-get install easy-rsa openvpn编译安装
由于变态的选择,我在没有任何特殊需求的情况下走向了编译安装……
apt安装的lzop不能用于编译openvpn,据说要编译安装lzo才行。我发现其实只要apt install liblzo2-dev就可以成功配置openvpn的编译配置。良好习惯的驱使下我想mkdir build,结果发现已经有build文件夹,而且不是空的!!!我选择了不进入build文件夹直接开始运行./configure配置
easy-rsa
这个工具用来生成各种证书。依次运行:
- cd /usr/share/easy-rsa
- ./clean-all
- ./build-ca
- ./build-key-server server
- ./build-key client1
- ./build-key client2
./build-dh
openvpn
- openvpn --genkey --secret keys/ta.key
- mkdir /etc/openvpn/keys
cp /usr/share/easy-rsa/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
后续配置
# 在openvpn的配置目录下新建一个keys目录
mkdir /etc/openvpn/keys# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/# 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/# 查看server.conf里的配置参数
grep '^1' /etc/openvpn/server.conf# 编辑server.conf
vim /etc/openvpn/server.confport 1194
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议
proto tcp
dev tun # 路由模式,桥接模式用dev tap
# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept secret
dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和实际的局域网冲突即可
server 10.8.0.0 255.255.255.0 # 路由模式,桥接模式用server-bridge
ifconfig-pool-persist ipp.txt
# 10.0.0.0/8是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改
push "route 10.0.0.0 255.0.0.0"
# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
duplicate-cn
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log
status openvpn-status.log
# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log
log-append openvpn.log
# 改成verb 5可以多查看一些调试信息
verb 5# 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sed -i '/net.ipv4.ip_forward/s/#//' /etc/sysctl.conf
sysctl -p# 配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
mkdir /etc/iptables
iptables-save > /etc/iptables/iptables.conf
# 关闭ufw防火墙,改成iptables,这一步按需要设置,比较ufw在Ubuntu默认关闭的。iptables和ufw任选一个即可。
ufw disable# 启动openvpn并设置为开机启动
systemctl start openvpn@server
systemctl enable openvpn@server
# 在systemd单元文件的后面,我们通过指定特定的配置文件名来作为一个实例变量来开启OpenVPN服务,我们的配置文件名称为/etc/openvpn/server.conf,所以我们在systemd单元文件的后面添加@server来开启OpenVPN服务# 复制一份client.conf模板命名为client.ovpn
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.ovpn
编辑client.ovpn
vim /etc/openvpn/client.ovpn
client
dev tun # 路由模式
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote 203.195.1.2 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key
ns-cert-type server
# 去掉前面的注释
tls-auth ta.key 1
comp-lzo
verb 5
客户端
服务器和客户端的安装是一致的。将OpenVPN服务器上的client.ovpn、ca.crt、client1.crt、client1.key、ta.key上传到Linux客户端安装目录下的/etc/openvpn文件夹。
openvpn --daemon --cd /etc/openvpn --config client.ovpn --log-append /var/log/openvpn.log &
- #; ↩
本文由 Hur 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Sep 1, 2022 at 06:07 pm