发布时间: 2023-2-2 文章作者: myluzh 分类名称: OpenVPN 朗读文章
#临时关闭selinux setenforce 0 #添加epel yum源 wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean yum makecache #yum安装包 yum install openvpn -y
# 下载安装easy-rsa wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz tar xf EasyRSA-3.1.2.tgz mkdir -p /etc/openvpn/easy-rsa3 cp -r EasyRSA-3.1.2/* /etc/openvpn/easy-rsa3 # 进入easy-rsa3目录 cd /etc/openvpn/easy-rsa3/ #初始化目录 ./easyrsa init-pki # 复制vars文件模板 cp /etc/openvpn/easy-rsa3/vars.example /etc/openvpn/easy-rsa3/vars # 编辑vars文件 vim vars set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "Zhejiang" set_var EASYRSA_REQ_CITY "Hangzhou" set_var EASYRSA_REQ_ORG "ITHO" set_var EASYRSA_REQ_EMAIL "support@itho.cn" set_var EASYRSA_REQ_OU "ITHO OpenVPN" #移动vars文件到pki目录 mv vars ./pki/ #创建根证书 #nopass 参数表示不加密;也可以不加此参数,那就需要输入密码短语 ./easyrsa build-ca nopass Common Name (eg: your user, host, or server name) [Easy-RSA CA]:ITHO #创建服务端秘钥 ./easyrsa gen-req server nopass Common Name (eg: your user, host, or server name) [server]:ovpnServer Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa3/pki/reqs/server.req key: /etc/openvpn/easy-rsa3/pki/private/server.key #给服务端证书签名,这里要输入yes才能完成 ./easyrsa sign-req server server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes Certificate created at: * /etc/openvpn/easy-rsa3/pki/issued/server.crt #创建客户端秘钥 ./easyrsa gen-req client nopass Common Name (eg: your user, host, or server name) [client]:ovpnClient Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa3/pki/reqs/client.req key: /etc/openvpn/easy-rsa3/pki/private/client.key #给客户端证书签名,这里要输入yes才能完成 ./easyrsa sign-req client client Certificate created at: * /etc/openvpn/easy-rsa3/pki/issued/client.crt #创建Diffie-Hellman ./easyrsa gen-dh DH parameters of size 2048 created at: /etc/openvpn/easy-rsa3/pki/dh.pem #创建TLS认证密钥 openvpn --genkey --secret /etc/openvpn/ta.key # 拷贝证书到目录 # 目录自定义,openvpnserver配置文件中需要用到 cd /etc/openvpn/easy-rsa3/pki/ cp ca.crt dh.pem /etc/openvpn/ cp private/server.key issued/server.crt /etc/openvpn/server/ cp private/client.key issued/client.crt /etc/openvpn/client/
#修改文件目录权限 chown root.openvpn /etc/openvpn/* -R
cd /etc/openvpn/ cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf ./ vim server.conf #监听本机ip地址 local 0.0.0.0(这里填本机地址) #监控本机端口号 port 1194 #指定采用的传输协议,可以选择tcp或udp proto tcp #指定创建的通信隧道类型,可选tun或tap dev tun #指定CA证书的文件路径 ca /etc/openvpn/ca.crt #指定服务器端的证书文件路径 cert /etc/openvpn/server/server.crt #指定服务器端的私钥文件路径 key /etc/openvpn/server/server.key #指定迪菲赫尔曼参数的文件路径 dh /etc/openvpn/dh.pem #指定虚拟局域网占用的IP地址段和子网掩码,此处配置的服务器自身占用.1的ip地址 server 10.8.0.0 255.255.255.0 #服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP)。 ifconfig-pool-persist ipp.txt #自动推送客户端上的网关及DHCP push "redirect-gateway def1 bypass-dhcp" #OpenVPN的DHCP功能为客户端提供指定的 DNS、WINS 等 push "dhcp-option DNS 8.8.8.8" #允许客户端与客户端相连接,默认情况下客户端只能与服务器相连接 client-to-client #每10秒ping一次,连接超时时间设为120秒 keepalive 10 120 #开启TLS-auth,使用ta.key防御攻击。服务器端的第二个参数值为0,客户端的为1。 tls-auth /etc/openvpn/ta.key 0 #加密认证算法 cipher AES-256-CBC #使用lzo压缩的通讯,服务端和客户端都必须配置 comp-lzo #最大连接用户 max-clients 100 #定义运行的用户和组 user openvpn group openvpn #重启时仍保留一些状态 persist-key persist-tun #输出短日志,每分钟刷新一次,以显示当前的客户端 status /var/log/openvpn-status.log #日志保存路径 log /var/log/openvpn.log log-append /var/log/openvpn.log #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细 verb 3 #相同信息的数量,如果连续出现 20 条相同的信息,将不记录到日志中 mute 10
#/etc/sysctl.conf 配置文件中添加 net.ipv4.ip_forward=1 #生效 sysctl -p4.2 centos6 使用iptables
#iptables iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE #这条有问题,写下面这条 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE iptables -I INPUT -p tcp --dport 1194 -j ACCEPT #如果你之前防火墙是直接关了的 这边开启防火墙后 你的web端口 ssh端口都需要自己再开一下 iptables -t nat -L #保存规则并重启 service iptables save systemctl restart iptables4.2 centos 7 使用firewalld
systemctl start firewalld.service firewall-cmd --state firewall-cmd --zone=public --list-all firewall-cmd --add-service=openvpn* --permanent firewall-cmd --add-port=1195/udp --permanent firewall-cmd --add-port=22/tcp --permanent firewall-cmd --add-source=10.8.0.0 --permanent firewall-cmd --query-source=10.8.0.0 --permanent firewall-cmd --add-masquerade --permanent firewall-cmd --query-masquerade --permanent4.3 重启网络服务
systemctl restart network.service
#启动 OpenVPN 服务 systemctl start openvpn@server #确认服务进程是否存在 netstat -lntp|grep openvpn ps -aux|grep openvpn #这里可能会无法启动报错,最后说解决办法
client dev tun proto tcp remote 你的服务器ip/域名 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key ns-cert-type server tls-auth ta.key 1 cipher AES-256-CBC auth-nocache verb 4
[root@VM-12-17-centos ~]# cat /etc/openvpn/server.conf local 0.0.0.0 port 1195 proto udp dev tun ca ./ca.crt cert ./server/server.crt key ./server/server.key dh ./dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push 'redirect-gateway def1 bypass-dhcp' push 'dhcp-option DNS 223.5.5.5' client-to-client duplicate-cn keepalive 10 120 tls-auth ./ta.key 0 cipher AES-256-GCM verb 3 mute 10 # 下面这几行是开启了ovpn设置账号密码登陆,详见:OpenVPN设置账号密码登陆 script-security 3 auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env username-as-common-name verify-client-cert none8.2 客户端配置 clietn.ovpn
# OvpnClientConfig client dev tun proto udp remote 121.4.185.211 1195 resolv-retry infinite nobind persist-key persist-tun ns-cert-type server cipher AES-256-GCM auth-nocache verb 3 # 账号密码登录 auth-user-pass # 证书认证登录 ;cert admin.crt ;key admin.key #ca证书 <ca> -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- </ca> #客户端证书 <cert> -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- </cert> #客户端密钥 <key> -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- </key> #ta.key文件内容 key-direction 1 <tls-auth> -----BEGIN OpenVPN Static key V1----- -----END OpenVPN Static key V1----- </tls-auth>
发表评论