开启双向通信后连接的客户端可以访问可通信的客户端
注意添加:push "route 10.22.2.0 255.255.255.0" 告知客户端ip10.22.2.0流量走VPN通道
注意添加:ccd/{certname}开启服务端对指定ip与证书的客户端访问
注意添加:route 10.22.2.0 255.255.255.0 告知服务端可ip10.22.2.0流量走VPN通道
教程:Linux系统搭建搭建OpenVPN
相关文档1

服务安装与设置(OpenVPN 2.4.12 x86_64-redhat-linux-gnu)

# ubuntu安装
apt-get install openvpn

# 查看
systemctl status openvpn.service

# 其他工具
apt-get install libssl-dev  

apt-get install openssl

# 制作证书相关工具 
apt-get -y install easy-rsa 
# 查看easy-rsa安装的文件,如下:
dpkg -L easy-rsa |more

# 启用 IP 转发:
sudo sysctl -w net.ipv4.ip_forward=1
# 持久化 IP 转发设置:
sudo nano /etc/sysctl.conf
# 找到 #net.ipv4.ip_forward=1 并取消注释。然后保存文件并使其生效:
sudo sysctl -p
# 开启nat转发,相当于路由映射功能,开启后可直接访问内网其他主机 建议加启动脚本里,以免重启丢失配置
# 如果未开启,内网其他主机收到的访问者ip是10.8.0.x,它们会找不到访问者,开启后访问者ip就是vpn服务ip
# -s 10.8.0.0/24 为指定网段,可不指定针对所有
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

服务器配置

server文件配置

# /etc/openvpn/server.conf
port 1194                                  #端口
proto tcp                                  #协议
dev tun                                    #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt                #ca证书的位置
cert /opt/easy-rsa/pki/issued/server.crt   #服务端公钥的位置
key /opt/easy-rsa/pki/private/server.key   #服务端私钥的位置
dh /opt/easy-rsa/pki/dh.pem                #证书校验算法
server 10.8.0.0 255.255.255.0              #给客户端分配的地址池
push "route 172.22.227.0 255.255.255.0"    #允许客户端访问的内网网段
push "route 10.22.2.0 255.255.255.0"       #允许客户端访问的内网网段
push "dhcp-option DNS 8.8.8.8"             #告知客户端使用的dns,如果要vpn控制dns可以指向vpn服务内部ip(vpnip如10.8.0.1)并在服务上搭建dns服务
route 10.22.2.0 255.255.255.0              #向服务端声明客户端的路由
client-to-client                           #允许客户端与客户端之间通信
client-config-dir ccd                      #指定ccd客户端配置文件目录
ifconfig-pool-persist ipp.txt              #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
keepalive 10 120                           #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 100                            #最多允许100个客户端连接
status openvpn-status.log                  #日志位置,记录openvpn状态
log /var/log/openvpn.log                   #openvpn日志记录位置
verb 3                                     #openvpn版本
persist-key                                #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun                                #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn                               #客户端密钥(证书和私钥)是否可以重复
link-mtu 1543                              #最大传输单元,客户端配置与这个一致才稳定
# 启用 tls-auth 并指定 ta.key 文件
# tls-auth 用于启用 HMAC(Hash-based Message Authentication Code)认证。
# /etc/openvpn/ta.key 是服务器端密钥文件的路径。
# 0 表示服务器端使用这个密钥进行验证,客户端将使用 1 来表示它的角色。
tls-auth /etc/openvpn/ta.key 0

开启服务器对客户端通信(双向通信)

#/etc/openvpn/ccd/client(文件名client对应证书name,一个ip一个文件)
iroute 10.22.2.0 255.255.255.0

客户端配置

# linux 保存到 /etc/openvpn/client.conf
dev tun
proto tcp
remote openvpnsvc.wanderto.top 1194

;http-proxy-retry
;http-proxy [proxy server] [proxy port]

resolv-retry infinite
nobind
persist-key
persist-tun
client
verb 3
#auth-user-pass
link-mtu 1543
# 启用 tls-auth 并指定 ta.key 文件
tls-auth ta.key 1

<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

</ca>

<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

</cert>

<key>
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

</key>

#或者指定文件

# ca ./ca.crt
# cert ./cloudvoyage.crt
# key ./cloudvoyage.key

# 客户端启动命令:service openvpn@client start

生成客户证书

# 创建Easy-RSA目录并初始化PKI(公共密钥基础设施):
make-cadir /opt/easy-rsa
# 然后,使用下面的命令初始化 PKI(证书颁发机构)目录:
./easyrsa init-pki
# 接下来,生成 CA 证书。这将是我们 VPN 服务器和客户端信任的根证书。
./easyrsa build-ca
# 生成服务器证书和密钥(openvpn的service证书):
./easyrsa build-server-full server nopass
# 生成 Diffie-Hellman 参数,用于加密密钥交换:
./easyrsa gen-dh
# 生成一个用于防止 DoS 攻击的 HMAC 密钥(可选):
openvpn --genkey --secret pki/ta.key

# 证书目录
cd /opt/easy-rsa/

# 开始生成
./easyrsa gen-req client1 nopass
# PS: 回车就行
./easyrsa sign-req client client1
# PS: 会要求输入CA证书生成时输入的密码(自己的密码小提示,常用密码不加英文)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注