新冠来袭,公司只能通过网络办公,公司的svn、内部管理系统以及同局域网办公是当务之急,公司没有相关的网络设备于是只能用一台linux来下网关设备,部署openVPN,linux服务器两块网卡一块接外网,一块接内网,打通内部办公系统,openVPN在linux安装如下(linux是发行版是centos6,2.6内核)
1、安装openvpn+easyrsa
yum install -y epel-release automake lzo-devel openssl-devel pam-devel openssl lzo pam pkgconfig makecache
yum install -y openvpn easy-rsa
2、复制相关文件
cp /usr/share/doc/easy-rsa-3.0.6/vars.example /etc/openvpn/easy-rsa/vars
cp -r /usr/share/easy-rsa/3.0.6/* /etc/openvpn/easy-rsa/
cp /usr/share/doc/openvpn-2.4.8/sample/sample-config-files/server.conf /etc/openvpn/
3、编辑vars文件
vi /etc/openvpn/easy-rsa/vars,内容如下
set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "ZHEJIANG"
set_var EASYRSA_REQ_CITY "TONGXIANG"
set_var EASYRSA_REQ_ORG "TYNT.CN"
set_var EASYRSA_REQ_EMAIL "admin@tynt.cn"
set_var EASYRSA_REQ_OU "admin"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "admin"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST "sha256"
4、创建证书
cd /etc/openvpn/easy-rsa
./easyrsa init-pki #目录初始化
4.1 创建ca根证书
./easyrsa build-ca #创建根证书,输入2次pem密码,并记住(我输入的是tynt)
出现Common Name 输入名称,如openvpn-ca,回车后生成ca根证书
4.2 创建服务端证书
./easyrsa gen-req server nopass
出现Common Name 输入tyntServer,回车显示生成了2个文件server.key和server.req
4.3 签署服务端证书
./easyrsa sign server server #回车后输入yes,当显示ca.key:时输入ca根证书的密码,这里是tynt
4.4 创建Diffie-Hellman,确保key穿越不安全网络的命令
./easyrsa gen-dh #等一段时间后显示created at /etc/openvpn/easy-rsa/pki/dh.pem
4.5 生成ta秘钥文件
openvpn --genkey --secret /etc/openvpn/easy-rsa/ta.key
5、创建客户端证书
mkdir /home/charles_li/client #我这里用户名是charles_li,根据你自己的来放目录
cd /home/charles_li/client
cp -r /usr/share/easy-rsa/3.0.6/* ./
5.1 初始化
./easyrsa init-pki
5.2 创建客户端证书
./easyrsa gen-req client #出现Common Name 输入client,回车会创建2个文件 client.key和client.req
5.3 导入签约证书
cd /etc/openvpn/easy-rsa/
./easyrsa import-req /root/client/pki/reqs/client.req client
5.4 签约证书
./easyrsa sign client client #回车后输入yes,出现ca.key:输入tynt。
6、拷贝相关文件
6.1 拷贝服务端文件
cp pki/ca.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/
6.2 拷贝客户端文件
cp pki/ca.crt /home/charles_li/client/
cp pki/issued/client.crt /home/charles_li/client/
cp /home/charles_li/client/pki/private/client.key /home/charles_li/client/
cp /etc/openvpn/easy-rsa/ta.key /home/charles_li/client/
7、编辑服务端配置文件
vi /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 172.16.0.0 255.255.255.0"
push "dhcp-option DNS 114.114.114.114"
push "dhcp-option DNS 8.8.8.8"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
cipher AES-256-CBC
comp-lzo
max-clients 100
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
9、配置iptables
ifconfig查看下网卡的情况,我这边eth0是内网 172.16.0.201 ,eth1是外网IP,输入
iptables -A INPUT -p UDP --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.226
查看下情况
iptables -nL -t nat
保存iptables
service iptables save
10、配置转发
echo 1 > /proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf #改 net.ipv4.ip_forward=1
sysctl -p
11、启动服务端
openvpn /etc/openvpn/server.conf &
查看udp端口情况可以使用
netstat -lnptu
============以上服务端搭建完成===============
客户端使用(windows)
下载客户端openvpn-gui,同时下载服务器上保存的客户端的几个文件ca.crt,client.req,client.key,ta.key
安装完openvpn后将4个文件拷贝到安装目录的config下面,同时新建并编辑clients.ovpn,内容如下:
client
dev tun
proto udp
remote 公司外网IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3
保存
双击启动文件或者 bin里的openvpn-gui.exe,启动后任务栏有个小图标,右键选项-高级,里面有个配置文件
文件夹栏目,选择到C:\Program Files\OpenVPN\config,确定,点击链接就可以链接上公司的VPN了