把 CentOS6 的 OpenVPN 更新升級到最新

先前已在 CentOS6 安裝過 OpenVPN 了 (VPN + OpenVPN)
現在使用 tarball 來編譯安裝更新
並且使用 TLS 1.2 加密連線
但另闢通道 (port 1195),舊的還保留連線 (所以要改變 IP 網段,原本是 server 10.8.0.0,新的為 server 10.7.0.0 ,內部主機 IP 不變)
Client 端就直接用 yum 安裝

 

SERVER 端 (on CentOS6 with tarball)

下載編譯

wget https://swupdate.openvpn.org/community/releases/openvpn-2.4.8.tar.gz
tar zxvf openvpn-2.4.8.tar.gz
cd openvpn-2.4.8
./configure --prefix=/usr/local/openvpn
make
make install

將舊的設定複製過去

cp -rp /etc/openvpn /usr/local/openvpn/etc
mkdir -p /usr/local/openvpn/var/run/openvpn/
mkdir -p /usr/local/openvpn/var/lock/subsys/

設定 server.conf

vi /usr/local/openvpn/etc/server.conf

port 1195
proto udp
dev tun
ca /usr/local/openvpn/etc/ssorc-ca.crt
cert /usr/local/openvpn/etc/ssorc-server.crt
key /usr/local/openvpn/etc/ssorc-server.key
dh /usr/local/openvpn/etc/dh2048.pem
server 10.7.0.0 255.255.255.0
ifconfig-pool-persist /usr/local/openvpn/etc/ipp.txt
push "route 10.1.1.0 255.255.255.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /usr/local/openvpn/etc/openvpn-status.log
verb 3
cipher AES-256-CBC # 新加入
tls-version-min 1.2 # 新加入,使用 TLS v1.2 版本以上
tls-cipher "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256" # 新加入, openvpn --show-tls
tls-crypt /usr/local/openvpn/etc/tc.key # 新加入 ,不使用 tls-auth ta.key 0 改用 tls-crypt tc.key
                                        # openvpn 2.4 版的新參數

產生 tc.key

/usr/local/openvpn/sbin/openvpn --genkey --secret /usr/local/openvpn/etc/tls.key

測試

/usr/local/openvpn/sbin/openvpn --config /usr/local/openvpn/etc/server.conf

啟動

複製 /etc/init.d/openvpn 為 /etc/init.d/openvpn2,稍改一下路徑為 /usr/local/openvpn
service openvpn2 start
chkconfig openvpn2 on

開放防火牆

iptables -A INPUT -p udp --dport 1195 -j ACCEPT

 

CLIENT 端 (on CentOS7 with yum rpm)

安裝

yum install openvpn -y

產生複製過來需要的 key , 主要有 ca 、 client crt 、 client key 、 tc.key 等, 放到 /etc/openvpn/client 裡頭

並改一下權限

chmod 600 /etc/openvpn/client/ssorc-client.key
chmod 600 /etc/openvpn/client/tc.key

設定 client.conf

vi /etc/openvpn/client/client.conf

client
dev tun
proto udp
remote SSORC.TW 1195
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/client/ssorc-ca.crt # 跟 server 要
cert /etc/openvpn/client/ssorc-client.crt # 跟 server 要
key /etc/openvpn/client/ssorc-client.key # 跟 server 要
comp-lzo
verb 3
;remote-cert-tls server # 新加入,沒有這個會出現 WARNING: No server certificate verification method has been enabled
;auth-nocache # 新加入,沒有用這個會出現 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this,但可能會無法自動重新連線 !!
cipher AES-256-CBC # 新加入
tls-version-min 1.2 # 新加入,使用 TLS v1.2 版本以上
tls-cipher "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256" # 新加入, openvpn --show-tls
tls-crypt /etc/openvpn/client/tc.key # 新加入 , 不使用 tls-auth ta.key 1 改用 tls-crypt tc.key
                                     # openvpn 2.4 版的新參數,跟 server 要

測試

openvpn --config /etc/openvpn/client/client.conf

啟動 (@後面接的 client 表示為 client.conf 的 client 名稱)

systemctl start openvpn-client@client.service

假如說把 client.conf 放在 /etc/openvpn/client.conf , 啟動就為 ↓

systemctl start openvpn@client.service
systemctl enable openvpn@client.service

 

最後

Client 有 ping 內部主機就成功了

 

補充: 產生 key

SERVER 端

cd /usr/local/openvpn/etc/easy-rsa/2.0

編輯 vars 把 key size 改成 2048

export KEY_SIZE=2048

export 環境變數

. ./vars

產生 ca

. ./build-ca

建立 server key 與 crt

. ./build-key-server ssorc-server

建立 DH

. ./build-dh

複製到對的目錄

yes| cp -rp keys/ca.crt /usr/local/openvpn/etc/ssorc-ca.crt
yes| cp -rp keys/dh2048.pem /usr/local/openvpn/etc/dh2048.pem
yes| cp -rp keys/ssorc-server.key /usr/local/openvpn/etc/ssorc-server.key
yes| cp -rp keys/ssorc-server.crt /usr/local/openvpn/etc/ssorc-server.crt

Client 端

在 SERVER 端建立 CLIENT 需要的 key

. ./build-key ssorc-client

建立好後,將 ssorc-client.key 、 ssorc-client.crt 、ssorc-ca.crt ,以及 tc.key 複製到 Client 去

 

最後修改日期: 2019 年 12 月 11 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。