前两天接了个单子,由于沟通不到位,导致在VPC上部署openvpn,并且花了很长时间调试专门用于爱快路由器连接

的openvpn服务

虽然没有采用这种方式,但是也做个记录吧。

目前由于openvpn特征明显,并不推荐用来过墙。

但如果你有中转线路,那么这也是一种有效的方式,坑我也踩了,代码留给大家。

有想直接在爱快上面部署openvpn客户端用来出国的朋友可以往下看。

root用户登录

首先更新、安装openvpn

apt update
apt install openvpn

安装Easy-RSA:

apt install easy-rsa

在/etc/openvpn/文件夹创建一个用于Easy-RSA的工作目录并进入该目录

make-cadir /etc/openvpn/openvpn-ca
cd /etc/openvpn/openvpn-ca

配置Easy-RSA并生成CA证书和密钥

./easyrsa init-pki
./easyrsa build-ca nopass

生成服务器证书和密钥:

./easyrsa gen-req server nopass
./easyrsa sign-req server server

生成Diffie-Hellman参数:

./easyrsa gen-dh 1024  #1024生成速度更快,默认2048要等,根据需要修改吧

生成TLS密钥:(使用iKuai路由器自带的openvpn客户端连接需要这个,其他连接方式不需要用TLS验证,因为连接

的时候会有验证失败的问题

openvpn --genkey secret pki/ta.key

拷贝上面生成的ca、server证书、秘钥到/etc/openvpn/server文件夹

cp /etc/openvpn/openvpn-ca/pki/ca.crt /etc/openvpn/server/
cp /etc/openvpn/openvpn-ca/pki/private/server.key /etc/openvpn/server/
cp /etc/openvpn/openvpn-ca/pki/issued/server.crt /etc/openvpn/server/
cp /etc/openvpn/openvpn-ca/pki/dh.pem /etc/openvpn/server/
cp /etc/openvpn/openvpn-ca/pki/ta.key /etc/openvpn/server/

创建服务器配置文件 /etc/openvpn/server.conf,

nano /etc/openvpn/server.conf
touch /var/log/openvpn/openvpn.log #创建

并填入以下内容:

port 3689
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
#tls-auth /etc/openvpn/server/ta.key 0  #iKuai路由器请启用这一项,取消注释(删掉#)
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt 
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
comp-lzo adaptive #重要,某些网站不压缩无法打开,例如YouTube
log /var/log/openvpn/openvpn.log 
keepalive 10 120
cipher AES-256-GCM  
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 4

打开对应防火墙端口,并启动OpenVPN服务器

sudo iptables -A INPUT -p tcp --dport 3689 -j ACCEPT #匹配上面server配置文件自定义端口
sudo iptables-save > /etc/iptables/rules.v4
systemctl start openvpn@server
systemctl enable openvpn@server

创建客户端证书和密钥:

cd /etc/openvpn/openvpn-ca
./easyrsa gen-req client1 nopass  #自定义客户端名称 client1 
./easyrsa sign-req client client1

拷贝上面生成的客户端文件:

cp /etc/openvpn/openvpn-ca/pki/private/client1.key /etc/openvpn/client
cp /etc/openvpn/openvpn-ca/pki/issued/client1.crt /etc/openvpn/client

在客户端上创建一个配置文件,比如 client.ovpn

nano /etc/openvpn/client/client.ovpn

并填入以下内容

client
dev tun
proto tcp
remote 24kbrother.com 3689   # 将 [服务器 IP] 替换为你的服务器的公共 IP 地址或域名
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3
comp-lzo adaptive
<ca>
【ca.crt】
</ca>
<cert>
【client1.crt】
</cert>
<key>
【client1.key】
</key>
##########专门为爱快路由器配置TLS验证,否则请删除下面内容
<tls-auth>
【ta.key】
</tls-auth>

查看接口信息

ip a

判断你的VPC哪个接口连接的Internet

有的VPC有多接口,有的是单接口,一定要注意

我这里是ens5:

2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

    link/ether 42:01:0a:8a:00:03 brd ff:ff:ff:ff:ff:ff


配置防火墙参数【可写脚本】,以下命令修改好对应接口名称直接使用:

#!/bin/bash
# 清除所有已有的规则和链
iptables -F
iptables -X

# 设置默认策略
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的连接的数据返回
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许从 VPN 接口 (tun0) 到 Internet 接口 (ens5) 的转发****这里修改为你接入Internet的接口
iptables -A FORWARD -i tun0 -o ens5 -j ACCEPT

# 设置 NAT 规则,允许内部网络通过 Internet 接口访问外部网络
iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE

# 启用 IP 转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

#这里确认显示:net.ipv4.ip_forward = 1
sysctl -a | grep net.ipv4.ip_forward

# 保存规则,如果提示没有这个文件,可跳过。
iptables-save > /etc/iptables/rules.v4

安装iptables-persistent,固化防火墙规则

apt update
apt install iptables-persistent

手动保存当前的iptables规则,可以使用以下命令:

iptables-save > /etc/iptables/rules.v4

查看openvpn服务是否启动(running)

systemctl start openvpn@server
systemctl status openvpn@server

重启测试防火墙规则是否固化,未生效检查问题

整个服务端部署完成,可以去客户端测试了。


利用空余时间接各种远程协助服务:网络调试、部署、家用环境的网络优化、处理各种计算机、网络软件排障等。

B站私信即可 https://space.bilibili.com/1375690031