安装openvpn{(C/S)环境centos7}
#server和client端都要进行如下安装
yum install epel* -y
yum install openvpn easy-rsa -y
文章目录
配置通过预共享密钥文件实现P2P加密传输
#由于P2P模式很少使用,基本都是用于测试网络之间是否支持openvpn通信
S端:
#生成密钥文件
openvpn --genkey --secret /etc/openvpn/secret.key
#启动openvpn(默认是udp1194端口),下面是tcp模式
openvpn --ifconfig 192.168.0.1 192.168.0.2 --dev tun --secret /etc/openvpn/secret.key
#openvpn --ifconfig 192.168.0.1 192.168.0.2 --dev tun --secret /etc/openvpn/secret.key --proto tcp-server
C端:
#拷贝服务端的密钥文件
scp root@10.12.194.100:/etc/openvpn/secret.key /etc/openvpn/
#启动openvpn
openvpn --ifconfig 192.168.0.2 192.168.0.1 --dev tun --remote 10.12.194.100 --secret /etc/openvpn/secret.key
#openvpn --ifconfig 192.168.0.2 192.168.0.1 --dev tun --remote 10.12.194.100 --secret /etc/openvpn/secret.key --proto tcp-client
验证:
#在C端 ping 192.168.0.1
openvpn server端配置文件参数解释
#使用那种协议,可选的有,udp tcp-server tcp-client
proto udp
port 1194
#tun路由模式,tap桥模式,据说tun效率高于tap,但是tun只能转发IP数据,tap是二层可以封装任何协议,window下只有tap模式
dev tun
#该参数能防止密码被缓存到内存中
auth-nocache
#openvpn网络模式,默认是net30:表示掩码30位,有地址浪费,还有P2P模式,当然还有subnet这是比较推荐的
topology subnet
#push表示推送,即将配置推送给客户端,让客户端也使用subnet模式
push "topology subnet"
#定义分配给客户端的IP段,服务端自己默认使用第一个可以地址
server 172.16.0.0 255.255.255.0
#在openvpn重启时,再次连接的客户端将依然被分配和以前一样的IP地址
#ipp.txt文件格式 "nanchang,172.16.0.22" 一行一个
ifconfig-pool-persist /etc/openvpn/beihai/ipp.txt
#认证相关的信息
ca /etc/openvpn/ca/pki/ca.crt
cert /etc/openvpn/ca/pki/issued/beihai.crt
key /etc/openvpn/beihai/pki/private/beihai.key
#dh 是server必须要有的,客户端可以不要,它定义了如何进行密钥交换
dh /etc/openvpn/beihai/pki/dh.pem
##防DDOS攻击,openvpn控制通道的tls握手进行保护,服务器端0,客户端1
tls-auth /etc/openvpn/beihai/ta.key 0
#待openvpn初始化完成后,将其降级为nobody权限运行
user nobody
group nobody
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
comp-lzo #允许数据压缩,如果启用了客户端配置文件也需要有这项
keepalive 5 20 #表示每隔5秒ping一下客户端/服务端,若是20秒内无响应,认为down,随即重启openvpn(强烈开启)
max-clients 100 #最大客户端并发连接数量
push "dhcp-option DNS 8.8.8.8" #指定客户端使用的主DNS
push "dhcp-option DNS 8.8.4.4" #指定客户端使用的备DNS
client-to-client #默认客户端间不能互访,开启客户端互访,tap模式会形成广播域,tun不会
duplicate-cn #支持一个证书多个客户端登录使用,建议不启用
#开启对客户端进行细粒度控制(该目录需要手动创建,名字为客户端的证书辨识名)
client-config-dir /etc/openvpn/beihai/ccd
#给自己本地添加一个到隧道的路由
route 192.168.29.0 255.255.255.0
#推送一条路由信息给客户端
#推送路由,若是推送失败,需要检查server 是否设置正常,该故障我遇到过,设置ifconfig-pool了,发现推送失效
push "route 192.168.11.0 255.255.255.0"
#重定向默认网关
为什么要重定向网关:vpn客户端是经常出差的,网络环境不安全,希望它将所有流量传到公司,经公司出口
#其中包含的flags有"local autolocal def1 bypass-dhcp bypass-dns block-local ipv6 !ipv4"(多个标志之间用空格分隔),
#推荐使用def1,它使用0.0.0.0/1和128.0.0.0/1而不是0.0.0.0/0来覆盖默认网关,即有新路由也保留原始默认网关,只是优先匹配而已
#block-local 是表示当客户端拨入后,阻断其除与本地网关的访问外,本地的其他IP都不允许访问
push "redirect-gateway def1 bypass-dhcp"
#记录日志,每次重新启动openvpn后追加原有的log信息
log-append /var/log/openvpn.log
#日志记录级别,可选0-9,0只记录错误信息,4能记录普通的信息,5和6在连接出现问题时能帮助调试,9显示所有信息,甚至连包头等信息都显示(像tcpdump)
verb 3
#状态文件:定期(默认60s)把状态信息写到该文件,以便自己写程序计费或者进行其他操作(需要关闭selinux)
status /var/log/openvpn-status.log
#相同信息的数量,如果连续出现 20 条相同的信息,将不记录到日志中。
mute 20
CCD配置文件语法,CCD能对客户端进行细粒度控制
ifconfig-push :向客户端推送虚拟IP地址,它将会覆盖掉 --config-pool的动态分配地址
local
remote-netmask :他们的设置相当于--config 选项,用于在客户端机器上远程执行vpn通道的配置
push
push-reset
iroute :用于从服务器向特定的客户端生成内部路由,不管客户端从哪里拨入,总是将某个特定子网从服务器路由到客户端,同时需要在服务器端使用--route指令添加该系统路由
config
#事例
cat /etc/openvpn/beihai/ccd/nanchang
ifconfig-push 172.16.0.88 255.255.255.0 #表示给客户端分配一个特定IP地址
push "redirect-gateway def1 bypass-dhcp" #重定向默认网关
openvpn client端配置文件参数解释
#随机选择一个Server连接,否则按照顺序从上到下依次连接。该选项默认不启用。
remote-random
#始终重新解析Server的IP地址(如果remote后面跟的是域名),保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址。这样无需人为重新启动,即可重新接入VPN。
resolv-retry infinite
将openvpn配置成开机自启服务
第一:不能为服务器/客户端的证书添加密码
#方法一:生成证书请求时,使用nopass参数,不指定密码
./easy-rsa gen-req nanchang nopass
#方法二:若是已经指定了密码,请使用set-rsa-pass 取消密码(在证书生成目录进行操作)
[root@ca nanchang]./easy-rsa set-rsa-pass nanchang nopass
第二:配置守护程序的配置文件(以centos7为例)
#查看安装时自带的守护程序配置文件(以centos7为例)
[root@beihai nanchang]# rpm -ql openvpn | grep systemd
/usr/lib/systemd/system/openvpn-client@.service
/usr/lib/systemd/system/openvpn-server@.service
/usr/lib/systemd/system/openvpn@.service
/usr/share/doc/openvpn-2.4.6/README.systemd
#服务器端(注意配置文件一定要是如下路径,如下名称哦)
#注意,使用守护进程的方式,server.conf里面不要有status /var/log/openvpn.status,不然无法启动
cat /etc/openvpn/server.conf
systemctl -f enable openvpn@server.service
systemctl start openvpn@server
#客户端(注意配置文件一定要是如下路径,如下名称哦)
cat /etc/openvpn/client.conf
systemctl -f enable openvpn@client
systemctl start openvpn@client
openvpn的管理接口使用
#开启方式:需要在服务器端的配置文件(/etc/openvpn/server.conf)中添加一行
# 在服务器127.0.0.1上监听2300端口,后面是进入的密码保存路径,该文件第一行为密码(cat /etc/openvpn/management-pass)
management 127.0.0.1 2300 /etc/openvpn/management-pass
#管理方式:
telnet 127.0.0.1 2300
#可以用help查看帮助,例如可以使用 "status" "kill nanchang"等
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论