前言
环境
Hostname | Ipaddress | 系统版本 | 用途 |
---|---|---|---|
vpnserver | 120.46.135.141 | centos7.6 | vpn服务器 公网 |
vpnclient1 | 随便 (两个客户端不能通信信就行) | centos7.6 | 客户端 |
vpnclient2 | 随便 | centos7.6 | 客户端2 |
操作:
vpnserver:服务器
yum install rpm-build gcc lsof net-tools -y
yum install -y pam-devel*
yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel
yum -y install epel-release
yum install -y pkcs11-helper pkcs11-helper-devel
确认已经安装完成:
rpm -qa lzo lzo-devel openssl openssl-devel pam pam-devel pkcs11-helper pkcs11-helper-devel
下载安装包:openvpn-2.2.2.tar.gz
rpmbuild -tb openvpn-2.2.2.tar.gz
ls /root/rpmbuild/RPMS/x86_64
rpm -ivh /root/rpmbuild/RPMS/x86_64/openvpn-2.2.2-1.x86_64.rpm
配置OpenVPN服务(vpnserver)
初始化KPI
cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0
vim vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SH"
export KEY_CITY="SHANGHAI"
export KEY_ORG="wu2700222"
export KEY_EMAIL="wu2700222@126.com"
上述参数的值可以自定义设置,对配置无影响
生成服务端的证书
清除并删除keys目录下的所有key
cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0
ln -s openssl-1.0.0.cnf openssl.cnf
ll openssl*
source ./vars
./clean-all
生成CA证书,一直回车完成就可以:
./build-ca
生成服务器证书:vpnserver是server端的证书名字
遇到交互输入 y
会在keys目录中保存vpnserver.key 、vpnserver.csr 、vpnserver.crt的文件
./build-key-server vpnserver
创建vpn登陆用户的秘钥与证书
遇到交互输入y
会生成vpnclient.key 、vpnclient.csr 、vpnclient.crt
./build-key vpnclient
如果创建用户证书时报错,可以将keys整个目录删除,然后从source
./vars这一步开始重新操作(慎重,否则之前在keys目录里的用户数据就会都删除)
生成Diffie Hellman参数
./build-dh
执行了./build-dh后,会在 keys 目录下生成 dh 参数文件 dh1024.pem。该文件客户端验证的时候会用到
将/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys 目录下的所有文件复制到
/etc/openvpn下:
cp -a /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys/* /etc/openvpn/
复制openvpn服务端配置文件 server.conf 到 /etc/openvpn/ 目录下:
cp -a /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/
cd 到 /etc/openvpn/
查看server.conf文件的配置
改成如下
安全组开放相应端口
;local a.b.c.d
local 0.0.0.0
port 5000
;proto tcp
proto tcp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert vpnserver.crt
key vpnserver.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
push "route 10.0.0.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
duplicate-cn
keepalive 10 120
;tls-auth ta.key 0 # This file is secret
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo
;max-clients 100
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
;log-append openvpn.log
verb 3
;mute 20
开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
添加iptables规则,确保服务器可以转发数据包到外网:
yum install -y iptables iptables-services
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
systemctl restart iptables
iptables -t nat -L
启动OpenVPN
openvpn server.conf
lsof -i:5000
/etc/openvpn/openvpn.log 日志文件
然后在/etc/openvpn/下编写vpnclient用户的config.ovpn客户端配置文件
vim /tmp/config.ovpn
client
dev tun
proto tcp
remote 120.46.135.141 5000
resolv-retry infinite
nobind
mute-replay-warnings
ca ca.crt
cert vpnclient.crt
key vpnclient.key
comp-lzo
然后将ca.crt、config.ovpn、vpnclient.crt、vpnclient.csr、vpnclient.key这五个文件放到vpnclient用户所在的虚拟机上
在vpnclient1:虚拟机其他客户机一样
yum install -y epel-release
yum install -y openvpn
openvpn config.ovpn
结果
会分配给客户一个ip
然后用所分配的ip进行操作
有问题下方留言
2022-12-11 02:24:05 星期日