1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| * ServerIP: 10.5.5.27、192.168.0.181 yum install -y epel-release yum install -y openvpn easy-rsa # 安装openvpn cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/ # 拷贝该示例配置文件到配置目录 vim /etc/openvpn/server.conf local 10.5.5.27 port 1194 # 定义openvpn使用端口 proto tcp # 通过udp协议连接,也可以使用tcp协议。建议使用TCP协议,这样更稳定。 dev tun # 定义openvpn运行模式,openvpn有两种运行模式一种是tap模式的以太网通道,一种是tun模式的路由 IP 通道。 ca /etc/openvpn/easy-rsa/pki/ca.crt # openvpn使用的CA证书文件,CA证书主要用于验证客户证书的合法性,存放位置请依据实际情况自行改动 cert /etc/openvpn/easy-rsa/pki/issued/server.crt # openvpn服务器端使用的证书文件,存放位置请依据实际情况自行改动 key /etc/openvpn/easy-rsa/pki/private/server.key # This file should be kept secret # 服务器密钥存放位置,请依据实际情况自行改动 dh /etc/openvpn/easy-rsa/pki/dh.pem # Diffie hellman文件,存放位置请依据实际情况自行改动 server 10.8.0.0 255.255.255.0 # openvpn在使用tun路由模式时,分配给client端分配的IP地址段,虚拟局域网网段设置,请依据须要自行改动,不支持和拔号网卡位于同一网段 ifconfig-pool-persist ipp.txt # 在openvpn重新启动时,再次连接的client将依旧被分配和曾经一样的IP地址 push "route 192.168.0.0 255.255.255.0" # 为客户端创建对应的路由,以另其与公司网内部服务器通信,但记住,公司网内部服务器也需要有可用路由返回到客户端 ;push "redirect-gateway def1 bypass-dhcp" # 测试发现,不加此条,在客户端连接openvpn后,可以连通外网,加此条无法解析外网地址。 push "dhcp-option DNS 114.114.114.114" push "dhcp-option DNS 114.114.115.115" # 向客户端推送的DNS信息,DNS配置,依据实际情况配置 keepalive 10 120 # 活动连接保时期限 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC comp-lzo max-clients 10 user nobody group nobody persist-key persist-tun status openvpn-status.log log-append openvpn.log verb 3 mkdir -p /etc/openvpn/easy-rsa/keys cp -rf /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/ cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/easy-rsa/vars cd /etc/openvpn/easy-rsa/ vim vars set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" # 定义key的生成目录 set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "CN" # 定义所在的国家 set_var EASYRSA_REQ_PROVINCE "BJ" # 定义所在的省 set_var EASYRSA_REQ_CITY "BeiJing" # 定义所在的城市 set_var EASYRSA_REQ_ORG "ccjd" # 定义所在的组织 set_var EASYRSA_REQ_EMAIL "[email protected]" # 定义邮箱 set_var EASYRSA_REQ_OU "IT" # 定义所在单位 set_var EASYRSA_KEY_SIZE 2048 # 定义生成私钥的大小,一般为1024或2048,默认为2048位。这个就是我们在执行build-dh命令生成dh2048文件的依据。 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 3650 # ca证书有效期,默认为3650天,即十年 set_var EASYRSA_CERT_EXPIRE 3650 # 定义秘钥的有效期,默认为3650天,即十年 set_var EASYRSA_NS_SUPPORT "no" set_var EASYRSA_NS_COMMENT "Easy-RSA Generated Certificate" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf" set_var EASYRSA_DIGEST "sha256" # 配置证书文件,修改上面的行 ./easyrsa init-pki # 到easy-rsa目录下,初始化,会在当前目录创建PKI目录,用于存储一些中间变量及最终生成的证书 ./easyrsa build-ca nopass # 创建根证书,nopass表示不设置密码,一直回车即可。会生成根证书:ca.crt,文件在:/etc/openvpn/easy-rsa/pki/ca.crt ./easyrsa gen-dh openvpn --genkey --secret ta.key # 创建ta.key cp -r ta.key /etc/openvpn/ ./easyrsa gen-req server # 创建服务端证书,生成请求,使用gen-req来生成req,创建server端证书和private key。也可以在之后使用nopass,或设置密码。生成服务器证书:/etc/openvpn/easy-rsa/pki/private/server.key、/etc/openvpn/easy-rsa/pki/reqs/server.req ./easyrsa sign-req server server # 签发证书,签约服务端证书,给server端证书做签名,首先是对一些信息的确认,可以输入yes,然后输入build-ca时设置的那个密码,因上面没有设置密码,所以会直接通过。生成服务端签名证书:/etc/openvpn/easy-rsa/pki/issued/server.crt ./easyrsa build-client-full ccjd # 生成客户端用户证书,ccjd是用户名,需要输入客户端密码与ca密码(上面没有设置)。生成客户端用户签名证书:/etc/openvpn/easy-rsa/pki/issued/ccjdname.crt、/etc/openvpn/easy-rsa/pki/private/ccjdname.key、/etc/openvpn/easy-rsa/pki/reqs/ccjdname.req systemctl start openvpn@server # 启动服务,启动时输入创建服务端证书时输入的密码,第一次启动可能不成功,可以再使用此命令启动,直到需要输入密码为止 systemd-tty-ask-password-agent # 启动后输入上面命令,再输入密码 ss -tlnu # 查看是否监听了udp的1194端口,如果没有监听,可以再执行启动命令,直到监听端口为止 echo 1 > /proc/sys/net/ipv4/ip_forward # 添加路由转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p # 这种方法也可以开启转发功能,sysctl -p是使用配置文件生效 iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 192.168.0.181 # 设置完生效可能有此慢,需要等半分钟 # 因为是固定IP,只是想让连接openvpn的主机可以访问另一个网段的主机,所以这里用了源地址转换,所有连接openvpn的主机会使用openvpn服务器的192地址与192.168.0.0/24网段的主机通信。如果是动态IP,也可以使用命令:iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -j MASQUERADE tcpdump -i tun0 -nn
|