server端配置:
1、完成linux主机基础配置,网络、selinux、iptables等
2、安装依赖包:
yum install -y lz4-devel lzo-devel pam-devel openssl-devel systemd-devel sqlite-devel
3、安装编译所需软件程序:
yum install -y autoconf automake libtool libtool-ltdl make
4、下载源码,编译与安装程序,设置软链接:
wget https://github.com/OpenVPN/openvpn/archive/v2.4.9.tar.gz mv v2.4.9.tar.gz openvpn-2.4.9.tar.gz tar xf openvpn-2.4.9.tar.gz cd openvpn-2.4.9/ autoreconf -i -v -f ./configure --prefix=/usr/local/openvpn --enable-lzo --enable-lz4 --enable-crypto --enable-server --enable-plugins --enable-port-share --enable-iproute2 --enable-pf --enable-plugin-auth-pam --enable-pam-dlopen --enable-systemd make && make install ln -s /usr/local/openvpn/sbin/openvpn /usr/local/sbin/openvpn
5、指定server端配置文件:
vim /usr/local/openvpn/lib/systemd/system/openvpn-server@.service ### 找到 ExecStart 这行,注释原有配置,添加如下,server.conf文件为server端的配置文件 ExecStart=/usr/local/openvpn/sbin/openvpn --config server.conf
6、配置系统环境,配置开机自启程序:
cp -a /usr/local/openvpn/lib/systemd/system/openvpn-server@.service /usr/lib/systemd/system/openvpn.service systemctl enable openvpn.service
7、使用easy-rsa生成证书:
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.7.tar.gz mv v3.0.7.tar.gz easy-rsa-3.0.7.tar.gz tar xf easy-rsa-3.0.7.tar.gz
8、根据easy-rsa-3.0.7/easyrsa3/vars.example文件生成全局配置文件vars
cd easy-rsa-3.0.7/easyrsa3 cp -a vars.example vars
9、修改vars配置文件,添加组织信息:
vim vars 再文件末尾添加如下信息,可自行修改: # 国家 set_var EASYRSA_REQ_COUNTRY "CN" # 省 set_var EASYRSA_REQ_PROVINCE "BJ" # 城市 set_var EASYRSA_REQ_CITY "BeiJing" # 组织 set_var EASYRSA_REQ_ORG "zhang" # 邮箱 set_var EASYRSA_REQ_EMAIL "zhang@test.com" # 拥有者 set_var EASYRSA_REQ_OU "ZJ" # 长度 set_var EASYRSA_KEY_SIZE 2048 # 算法 set_var EASYRSA_ALGO rsa # CA证书过期时间,单位天 set_var EASYRSA_CA_EXPIRE 36500 # 签发证书的有效期是多少天,单位天 set_var EASYRSA_CERT_EXPIRE 36500
10、生成服务端证书,初始化与创建CA根证书:
./easyrsa init-pki #输入两次PEM密码 PEM pass phrase,自行设置该密码用于后期签署客户端证书 ./easyrsa build-ca #输入组织名称,自行设置即可,如openvpn、name等
11、生成服务端证书:
./easyrsa build-server-full server nopass #生成过程中需要输入PEM密码,即上面设置的密码 ./easyrsa gen-dh #等待即可
12、生成ta.key(可提高安全性):
openvpn --genkey --secret ta.key
13、组织server端证书与配置文件:
mkdir -p /etc/openvpn/server/ #创建server路径文件夹 cp -a pki/ca.crt /etc/openvpn/server/ cp -a pki/private/server.key /etc/openvpn/server/ cp -a pki/issued/server.crt /etc/openvpn/server/ cp -a pki/dh.pem /etc/openvpn/server/ cp -a ta.key /etc/openvpn/server/ touch /etc/openvpn/server/server.conf #创建主配置文件
14、编辑主配置文件:
vim /etc/openvpn/server/server.conf
添加如下配置:
local 0.0.0.0 port 1194 #端口可自行定义 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 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt ;client-to-client duplicate-cn #允许一个用户账号,多终端登录 keepalive 10 120 tls-auth /etc/openvpn/server/ta.key 0 cipher AES-256-CBC compress lz4-v2 push "compress lz4-v2" ;comp-lzo max-clients 1000 user nobody group nobody persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log verb 3 ;explicit-exit-notify 1
15、启动服务端程序
systemctl start openvpn.service [root@izuf64ta6x9o7ecc1dn0pmz ~]# systemctl status openvpn.service ● openvpn.service Loaded: loaded (/usr/lib/systemd/system/openvpn.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2020-09-22 21:14:25 CST; 2 days ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 23452 (openvpn) Status: "Initialization Sequence Completed" CGroup: /system.slice/openvpn.service └─23452 /usr/local/openvpn/sbin/openvpn --config server.conf Sep 22 21:14:25 izuf64ta6x9o7ecc1dn0pmz systemd[1]: Stopped openvpn.service. Sep 22 21:14:25 izuf64ta6x9o7ecc1dn0pmz systemd[1]: Starting openvpn.service... Sep 22 21:14:25 izuf64ta6x9o7ecc1dn0pmz systemd[1]: Started openvpn.service. 查看监听端口,已经改为11940: [root@izuf64ta6x9o7ecc1dn0pmz ~]# netstat -lnpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 969/nginx: master p tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 969/nginx: master p tcp 0 0 0.0.0.0:22333 0.0.0.0:* LISTEN 32353/sshd tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 9668/java tcp 0 0 0.0.0.0:11940 0.0.0.0:* LISTEN 23452/openvpn tcp6 0 0 :::3306 :::* LISTEN 1542/mysqld [root@izuf64ta6x9o7ecc1dn0pmz ~]#
至此,服务器端配置完成。
客户端配置:
1、首先在服务器上添加用户,生成密钥证书信息:
进入之前easy-rsa-3.0.7/easyrsa3文件夹:
./easyrsa build-client-full zhangsan #zhangsan就是要添加的用户的名字,自行更改
windows客户端:
1、使用下载工具,将easy-rsa-3.0.7/easyrsa文件夹下的ca.crt、ca.key、ta.key、zhangsan.crt、zhangsan.key
文件下载到windows本地,安装客户端程序,将上述文件拷贝到C:\Program Files\OpenVPN\config(默认路径)下。创建zhangsan.ovpn文件,使用文本编辑器打开。
2、添加客户端配置文件信息并保存:
client dev tun proto tcp4 remote your_ip 11940 resolv-retry infinite nobind ;user nobody ;group nobody persist-key persist-tun ca ca.crt cert zhangsan.crt key zhangsan.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC compress lz4-v2 verb 3 ;mute 20
4、打开主程序,尝试连接即可,可以看到已经获取到了ip地址:
linux客户端:
1、客户端生成证书信息都一样。
使用下载工具,将easy-rsa-3.0.7/easyrsa文件夹下的ca.crt、ca.key、ta.key、zhangsan.crt、zhangsan.key
文件下载到linux本地。
2、在linux客户端安装openvpn,见上文服务器安装过程
3、指定客户端配置文件:
vim /usr/local/openvpn/lib/systemd/system/openvpn-server@.service ### 找到 ExecStart 这行,注释原有配置,添加如下,client.conf文件为client端的配置文件 WorkingDirectory=/etc/openvpn/client #指定目录 ExecStart=/usr/local/openvpn/sbin/openvpn --config client.conf
3、配置客户端配置文件,并将生成的证书拷贝至/etc/openvpn/client/文件夹:
mkdir -p /etc/openvpn/client/ #创建client路径文件夹 touch /etc/openvpn/client/client.conf #创建主配置文件 看起来应该是这样(centos7为本人创建的用户名): [root@localhost ~]# ls /etc/openvpn/client/ ca.crt ca.key centos7.conf centos7.crt centos7.key centos7.req pass.txt ta.key
4、编辑主配置文件:
[root@localhost ~]# cat /etc/openvpn/centos7/centos7.conf client dev tun proto tcp remote you_ip 11940 #自行修改服务器ip与端口 resolv-retry infinite nobind user nobody group nobody persist-key persist-tun ca ca.crt cert centos7.crt key centos7.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC compress lz4-v2 verb 3 ;mute 20 route 10.1.1.0 255.255.255.0 vpn_gateway route 10.1.2.0 255.255.255.0 net_gateway ;auth-user-pass pass.txt
5、启动服务:
systemctl start openvpn.service [root@localhost ~]# systemctl status openvpn.service ● openvpn.service Loaded: loaded (/usr/lib/systemd/system/openvpn.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-09-24 10:33:18 CST; 23h ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 6346 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 Memory: 1.1M CGroup: /system.slice/openvpn.service └─6346 /usr/local/openvpn/sbin/openvpn --config centos7.conf Sep 25 08:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 08:34:27 2020 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 E...t RSA Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 VERIFY OK: depth=1, CN=Easy-RSA CA Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 VERIFY KU OK Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 Validating certificate extended key usage Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 ++ Certificate has EKU (str) TLS Web Server Au...ation Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 VERIFY EKU OK Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 VERIFY OK: depth=0, CN=server Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 Outgoing Data Channel: Cipher 'AES-256-GCM' in...t key Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 Incoming Data Channel: Cipher 'AES-256-GCM' in...t key Sep 25 09:34:27 localhost.localdomain openvpn[6346]: Fri Sep 25 09:34:27 2020 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 E...t RSA Hint: Some lines were ellipsized, use -l to show in full.
查看获取的IP地址:tun0网卡
本文仅代表it Header立场 禁止转载,引用请注明出处:https://www.itheader.com/1102.html