一、架構圖
二、規劃:
1.外出筆記本:
系統:windows X
軟體:openvpn用戶端
2.VPN伺服器:
系統:Centos7.8
軟體:openvpn、easy-rsa、花生殼
三、環境準備(VPN伺服器)
1、開啟轉發功能并生效
## 不存在該配置則添加
# grep 'net.ipv4.ip_forward = 1' /etc/sysctl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p
2、iptables配置(隻需添加配置,不需要啟動iptables服務)
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
[[email protected] ~]# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.8.0.0/24 0.0.0.0/0
3、定時任務同步系統時間:crontab -l
4、使用上海時間:ls -l /etc/localtime
5、檢視硬體時間:hwclock --show
6、系統時間同步到硬體時間:hwclock --systohc
說明:如果時間不同步,那麼VPN登入通路就可能存在問題。
7、網卡設定:
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV6INIT=no
NAME=eth0
UUID=3813523a-3a49-4251-bb38-0af0bf18c3bb
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.100.194
DNS1=8.8.8.8
DNS2=114.114.114.114
GATEWAY=192.168.100.254
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV6INIT=no
NAME=eth1
UUID=3813523a-3a49-4251-bb38-0af0bf18c3bb
DEVICE=eth1
ONBOOT=yes
IPADDR=10.0.0.10
DNS1=8.8.8.8
DNS2=114.114.114.114
GATEWAY=10.0.0.254
四、openvpn
1、安裝依賴
yum install -y lz4-devel lzo-devel pam-devel openssl-devel systemd-devel sqlite-devel autoconf automake libtool libtool-ltdl
2、安裝openvpn
wget https://github.com/OpenVPN/openvpn/archive/v2.4.9.tar.gz
mv v2.4.9.tar.gz openvpn-2.4.9.tar.gz
tar xf openvpn-2.4.9.tar.gz
cd openvpn-2.4.9/
autoreconf -i -v -f
./configure --prefix=/usr/local/openvpn --enable-lzo --enable-lz4 --enable-crypto --enable-server --enable-plugins --enable-port-share --enable-iproute2 --enable-pf --enable-plugin-auth-pam --enable-pam-dlopen --enable-systemd
make && make install
ln -s /usr/local/openvpn/sbin/openvpn /usr/local/sbin/openvpn
3、修改配置檔案并啟動
# vim /usr/local/openvpn/lib/systemd/system/[email protected]
### 找到 ExecStart 這行,改為如下
ExecStart=/usr/local/openvpn/sbin/openvpn --config server.conf
配置系統服務,并開機自啟動
# cp -a /usr/local/openvpn/lib/systemd/system/[email protected] /usr/lib/systemd/system/openvpn.service
# systemctl enable openvpn.service
五、easy-rsa
1、安裝easy-rsa
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.7.tar.gz
mv v3.0.7.tar.gz easy-rsa-3.0.7.tar.gz
tar xf easy-rsa-3.0.7.tar.gz
2、修改配置檔案
cd easy-rsa-3.0.7/easyrsa3
cp -a vars.example vars
在檔案末尾添加一下資訊
# 國家
set_var EASYRSA_REQ_COUNTRY "CN"
# 省
set_var EASYRSA_REQ_PROVINCE "GD"
# 城市
set_var EASYRSA_REQ_CITY "ShenZhen"
# 組織
set_var EASYRSA_REQ_ORG "yu"
# 郵箱
set_var EASYRSA_REQ_EMAIL "[email protected]"
# 擁有者
set_var EASYRSA_REQ_OU "yuxiaoer"
# 長度
set_var EASYRSA_KEY_SIZE 2048
# 算法
set_var EASYRSA_ALGO rsa
# CA憑證過期時間,機關天
set_var EASYRSA_CA_EXPIRE 36500
# 簽發證書的有效期是多少天,機關天
set_var EASYRSA_CERT_EXPIRE 36500
六、生成服務端和用戶端證書
1、初始化與建立CA根證書
cd /root/easy-rsa-3.0.7/easyrsa3
./easyrsa init-pki
./easyrsa build-ca
在這部分需要輸入PEM密碼 PEM pass phrase,輸入兩次,此密碼必須記住,不然以後不能為證書簽名。還需要輸入common name 通用名,如:openvpen,這個你自己随便設定個獨一無二的。
2、生成服務端證書
./easyrsa build-server-full server nopass
./easyrsa gen-dh #建立Diffie-Hellman,確定key穿越不安全網絡的指令,時間會有點長,耐心等待
3、生成用戶端證書
./easyrsa build-client-full client nopass # 無密碼,實際應用中不推薦,用戶端有密碼可提高安全性
./easyrsa build-client-full zhangsan # 讓你輸入密碼,後續VPN連接配接時會使用
openvpn --genkey --secret ta.key #為了提高安全性,生成ta.key
4、整理服務端配置檔案
mkdir -p /etc/openvpn/server/
cp -a pki/ca.crt /etc/openvpn/server/
cp -a pki/private/server.key /etc/openvpn/server/
cp -a pki/issued/server.crt /etc/openvpn/server/
cp -a pki/dh.pem /etc/openvpn/server/
cp -a ta.key /etc/openvpn/server/
#服務端配置檔案
[[email protected] easyrsa3]# cat /etc/openvpn/server/server.conf
local 0.0.0.0
port 1194
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.100.0 255.255.255.0"
push "route 10.0.0.2 255.0.0.0"
push "route 10.0.10.0 255.255.255.0"
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
;comp-lzo
max-clients 1000
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
;explicit-exit-notify 1
#啟動openvpn(port:1194)
systemctl start openvpn.service
通過ifconfig指令,也可見多個tun0網卡資訊
七、花生殼
模拟環境,沒有公網ip,是以用花生殼
1、安裝phddns
wget https://down.oray.com/hsk/linux/phddns-5.1.0.amd64.rpm
rpm -ivh phddns-5.1.0.amd64.rpm
2、浏覽器輸入遠端管理位址b.oray.com進入花生殼遠端管理頁面,輸入安裝花生殼時生成的SN碼及預設密碼admin進入
3、首次登入,需要進行初始化:重設密碼,填寫手機,發送驗證碼
4、建立域名建立穿透映射
八、Windows用戶端配置與通路
1、用戶端安裝
win7:https://www.techspot.com/downloads/downloadnow/5182/?evp=851afc05ae3a528d9f392a9da40bc911&file=6
win10:http://down.i4t.com/openvpn-install-2.4.7-I606-Win10.exe
2、安裝完畢後會在「網絡連接配接」中會多出一個連接配接
3、用戶端zhangsan使用者配置檔案
1、注意路徑,在OpenVPN/config目錄下建立了client目錄
2、ca.crt、zhangsan.crt、zhangsan.key、ta.key都是之前建立好的,隻有zhangsan.ovpn需要單獨下載下傳并修改。
zhangsan.ovpn内容如下:
client
dev tun
proto tcp
remote ****.vip 端口(填寫花生殼上面的域名和端口)
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
ca ca.crt
cert zhangsan.crt
key zhangsan.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
compress lz4-v2
verb 3
;mute 20
4、連接配接zhangsan使用者
之前生成用戶端證書的時候,加上 nopass 參數,是以直接連接配接無需輸入密碼。如果連接配接的是使用者zhangsan,則需要輸入密碼。
連接配接成功如下所示
5、用戶端模拟通路辦公電腦
轉載于:http://www.zhangblog.com/2020/05/09/openvpn01/