疫情被隔离 不能连接公司内网,所以搭建一个VPN方便。
通过向日葵控制内网机器,在内网搭建openVPN服务器,首先需要一台有外网地址的服务器,我这里做的映射,选择udp协议,速度比较快一点。
安装相关软件包
yum -y install epel-release
yum -y install openvpn easy-rsa iptables-services
修改配置 生成文件
移动文件方便配置
cp -r /usr/share/easy-rsa/ /etc/openvpn/
编写变量并刷新
vim /etc/openvpn/easy-rsa/3.0.8/vars
export KEY_COUNTRY="cn"
export KEY_PROVINCE="SH"
export KEY_CITY="SH"
export KEY_ORG="**"
export KEY_EMAIL="**@qq.com"
export KEY_CN=gz
export KEY_NAME=gz
export KEY_OU=gz
source /etc/openvpn/easy-rsa/3.0.8/vars
生成CA证书
./easyrsa init-pki
./etc/openvpn/easy-rsa/3.0.8/easyrsa build-ca nopass
生成证书需要的Common Name可以自己随便写,完成后生成CA证书
/etc/openvpn/easy-rsa/3.0.8/pki/ca.crt
生成openvpn的证书和秘钥
./etc/openvpn/easy-rsa/3.0.8/easyrsa build-server-full server nopass
./etc/openvpn/easy-rsa/3.0.8/easyrsa gen-dh
生成文件dh.pem
生成tls-auth key安全验证文件
cd /etc/openvpn/easy-rsa/3.0.8 && openvpn --genkey --secret ta.key
生成/etc/openvpn/easy-rsa/3.0.8/ta.key
创建日志文件
mkdir -p /var/log/openvpn
chown openvpn:openvpn /var/log/openvpn/
拷贝配置文件并修改
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.cof /etc/openvpn && vim etc/openvpn/server.conf
port 1194 #转发接收端口
proto udp #转发协议
dev tun #生成tun0虚拟网卡
#前面生成的文件
ca /etc/openvpn/server/certs/ca.crt
cert /etc/openvpn/server/certs/server.crt
key /etc/openvpn/server/certs/server.key
dh /etc/openvpn/server/certs/dh.pem
tls-auth /etc/openvpn/server/certs/ta.key
server 10.8.0.0 255.255.255.0 #虚拟网卡网段
#服务器自动给客户端分配IP后,客户端下次连接时,仍然采用上次的IP地址(第一次分配的IP保存在ipp.tx
#中,下一次分配其中保存的IP)。
ifconfig-pool-persist ipp.txt
#虚拟网卡设置,如果不写 会读取/etc/resolv.conf下的配置,可能导致无法上网
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "redirect-gateway def1"
duplicate-cn #允许两个具有相同公用名的连接,因此一个证书可以由多个连接/用户使用.
keepalive 10 120 #每隔10秒客户端ping服务端,确保服务端没有离线,超长为120秒
cipher AES-256-CBC #加密类型 必须和客户端一致
comp-lzo #兼容性压缩,必须与client端设置一致
# 用户名和组
user openvpn
group openvpn
#persist 选项将尝试避免在重新启动时访问某些由于权限降级而可能不再可访问的资源。
persist-key
persist-tun
# 状态日志记录文件
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpnserver.log
log-append /var/log/openvpn/openvpnserver.log
# 设置适当的日志文件详细级别。
#
# 0 是静默的,除了致命错误
# 4 对于一般用途来说是合理的
# 5和6可以帮助调试连接问题
# 9 非常冗长
verb 4
关闭防火墙
setenforce 0
启动VPN
openvpn --daemon --config /etc/openvpn/server.conf
查看端口服务进程
netstat -tanulp | grep 1194
到这里VPN服务器就搭建完毕了,想要链接 需要给客户端生成相应的证书和秘钥。
生成客户端证书
./etc/openvpn/easy-rsa/3.0.8/easyrsa build-client-full client1 nopass
pki目录下的private和issued子目录分别生成client1.key和client1.crt文件。
创建client1.ovpn
client
proto udp
dev tun
remote *.*.123.86 1194
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key
remote-cert-tls server
persist-tun
persist-key
comp-lzo
cipher AES-256-CBC
verb 4
mute-replay-warnings
remote 为openvpn的服务器外网地址,如果是做的映射,需要指定映射为udp协议。否则tls链接会失败。
加密类型需要跟服务器设置保持一致,否则链接时会导致无服务无返回。
收集配置文件 打包发送给需要链接的人就可以了。
连接
下载tunnelblick
五个文件放在同一个目录下,把client1.ovpn拖入tunnelblick左侧 点击连接就可以了。
效果
断开VPN
连接VPN后
client1相当于一个用户,在openvpn的配置中设置了可以多个人使用同一个client文件,但是为了安全,最好给每一个需要连接的人配置一个证书。
如果连接上了不能访问内外网 可能是iptables没有打开,或者检查一下配置文件 是否路由了当前服务器的网络段
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
iptables -t nat -L