橋接和路由模式編譯安裝open***虛擬專用網絡

openv_n2.1編譯安裝
一、服務端安裝
1.安裝openv_nserver
安裝其他版本的v_n2.1版本
2.安裝環境:
yum -y install pam-devel openssl-devel lzo-devel automake gcc gcc-c++ patch
yum install -y pkcs11-helper pkcs11-helper-devel
10.168.10.0/24爲的網段地址
192.168.8.0/24爲內網地址段
10.168.10.4 爲
的內網地址
下載地址:
wget https://static.saintic.com/download/thirdApp/Openv_n/openv_n-2.1_rc21.tar.gz
wget https://static.saintic.com/download/thirdApp/Openv_n/openv_n-2.1_rc21_eurephia.patch
百度網盤屏蔽了v_n的程序了

3.編譯安裝:
/usr/local/openv_n
tar xvf openv_n-2.1_rc21.tar.gz
cd openv_n-2.1_rc21
patch -p1 < ../openv_n-2.1_rc21_eurephia.patch
./configure && make && make install
cd easy-rsa/2.0/
vim vars ;
source ./vars #修改默認國家、組織、郵件等,可不修改

創建證書的命令基本上都是在easy-rsa的目錄中:
/usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0
最主要的幾個命令:
./clean-all
./build-ca --batch
./build-key-server --batch server
./build-dh

4.創建根證書
./build-ca --batch
參數:--batch 無交互操作直接生成證書
創建的證書文件和私鑰文件存放位置:/usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0/keys
橋接和路由模式編譯安裝open***虛擬專用網絡

5.創建服務器證書
./build-key-server --batch server2
創建的證書文件和私鑰文件存放位置:/usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0/keys

橋接和路由模式編譯安裝open***虛擬專用網絡

6.創建客戶端證書和私鑰
./build-key --batch client2
創建的證書文件和私鑰文件存放位置:/usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0/keys
橋接和路由模式編譯安裝open***虛擬專用網絡

將多個服務器和客戶端的文件放入到一個目錄中,便於管理和便於寫配置文件
如果不是安裝多個v_n,建議目錄創建成/etc/openv_n/要不然會報錯,需要修改腳本
橋接和路由模式編譯安裝open***虛擬專用網絡
mkdir /etc/openv_n1/
cd /usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0/keys
mv ca.crt ca.key dh1024.pem server2.key server2.crt client2.* /etc/openv_n1/
cd /usr/local/openv_n/openv_n-2.1_rc21/sample-config-files
cp server.conf /etc/openv_n1/
修改配置文件/etc/openv_n1/server.conf

具體圖片在下面總結中

6.設置成密鑰+證書的驗證方式
checkpsw.sh是一個調用的密碼的一個腳本
psw_file中放入的是用戶名密碼:
zhangsan 123456
橋接和路由模式編譯安裝open***虛擬專用網絡
checkpsw.sh 配置文件
橋接和路由模式編譯安裝open***虛擬專用網絡

cat checkpsw.sh

#!/bin/sh
PASSFILE="/etc/openv_n/psw_file"
LOG_FILE="/var/log/v_n2/openv_n_psw.log"
TIME_STAMP=date "+%F %T"
if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi
CORRECT_PASSWORD=awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}
if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
[root@v_n pswd]# vim checkpsw.sh
[root@v_n pswd]# cat checkpsw.sh
#!/bin/sh
PASSFILE="/etc/pswd/psw_file"
LOG_FILE="/var/log/v_n2/openv_n_psw.log"
TIME_STAMP=date "+%F %T"
if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi
CORRECT_PASSWORD=awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}
if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1

二.總結:
vim vars ;
1.初始化
source ./vars #修改默認國家、組織、郵件等,可不修改
./clean-all
./build-ca #創建根證書,可以加上--batch免交互確認
./build-key-server server #創建服務器證書,可以加上--batch免交互確認
./build-key-server --batch server
./build-dh ##使用DH加密

創建證書的命令基本上都是在easy-rsa的目錄中:
/usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0
創2建多個客戶端證書
./build-key client ##創建客戶端證書,可以加上--batch免交互確認或使用 ./build-key --batch client
./build-key client1 ##創建客戶端證書,可以加上--batch免交互確認或使用 ./build-key --batch client
./build-key client2 ##創建客戶端證書,可以加上--batch免交互確認或使用 ./build-key --batch client
./build-key client3 ##創建客戶端證書,可以加上--batch免交互確認或使用 ./build-key --batch client
./build-key client4 ##創建客戶端證書,可以加上--batch免交互確認或使用 ./build-key --batch client

cd keys
將多個服務器和客戶端的文件放入到一個目錄中,便於管理和便於寫配置文件
mkdir /etc/openv_n1

cp ca.crt ca.key dh1024.pem server.key server.crt client* ../../../sample-config-files/server.conf /etc/openv_n
cp ../../../sample-scripts/openv_n.init /etc/init.d/openv_n

3.粘貼server端配置和client端配置文件
兩個模式均測試成功,分別是tun路由模式和tap橋接模式
相對應的客戶端也分別是相應的配置
後續做了幾次改動,都不影響連通性
修改配置文件/etc/openv_n1/server.conf
tun路由模式的配置
橋接和路由模式編譯安裝open***虛擬專用網絡
tap橋接模式的配置
橋接和路由模式編譯安裝open***虛擬專用網絡
;local
local 192.168.8.128
port 1194
proto udp
dev tun
ca ca.crt
cert server2.crt
key server2.key
dh dh1024.pem
server 10.9.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.8.0 255.255.255.0" ##向客戶端推送內網網段
#push "route 10.9.0.0 255.255.255.0" ##推送v_n網段
push "dhcp-option DNS 114.114.114.114" #dhcp分配dns
push "dhcp-option DNS 8.8.8.8"
client-to-client ##允許Openv_n客戶端之間通信
duplicate-cn
keepalive 10 120
comp-lzo
user nobody ##默認的程序用戶,建議以低權限賬戶運行
group nobody
persist-key
persist-tun
status /var/log/v_n2/openv_n-status.log
log /var/log/v_n2/openv_n.log
verb 3
key-direction 0
mode server
tls-server
auth-user-pass-verify /etc/openv_n/checkpsw.sh via-env
username-as-common-name
script-security 3

啓動v_n
/usr/local/sbin/openv_n --config /etc/openv_n/server.conf
開機啓動需要寫入開機文件中,覺得沒有必要的嘛
vim /etc/rc.local
/usr/local/sbin/openv_n --config /usr/local/etc/server.conf > /dev/null 2>&1 &

4.開啓轉發,並關閉防火牆和 SELinux

  1. iptables轉發規則
    openv_n無法訪問與openv_n服務器在同一內網的其他機器
    的原因就是因爲沒有開啓iptables的轉發規則
    把所有來自10.168.10.0/24網段的請求,全部通過openv_n服務器的eth0網卡轉發出去,也就是我們平時所說的IPtables的NAT規則。
    注意:IPtables規則是在openv_n服務器進行配置的,而不是openv_n客戶端。
    IPtables NAT規則如下:
    [root@v_n ~]# iptables -t nat -A POSTROUTING -s 10.168.10.0/24 -o eth0 -j MASQUERADE
    [root@v_n ~]# iptables -nL -t nat
    以上修改完畢後,我們啓動openv_n客戶端,看看是否可以與192.168.8.1/24網段機器進行通信。
    iptables -t nat -A POSTROUTING -s 10.168.10.0/24 -o eth0 -j MASQUERADE
    10.168.10.0是v_n獲取到的網址
    橋接和路由模式編譯安裝open***虛擬專用網絡
    6.路由器做端口映射:
    公網的1194端口tcp和udp開放

客戶端配置:
直接在D:\Program Files\Openv_n\config中新建一個文件命名爲client2.ov_n
客戶端配置
橋接和路由模式編譯安裝open***虛擬專用網絡
client
dev tun
proto tcp
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher BF-CBC
verb 3
remote 49.4.82.255 1194
ca ca.crt #根證書不用更換
cert client2.crt #客戶端證書更換
key client2.key #客戶端密鑰更換
#tls-auth ta.key 1 #關閉了tls認證
comp-lzo
key-direction 1
auth-user-pass

cp ca.crt ca.key dh1024.pem server.key server.crt client* /etc/openv_n

客戶端批量增加用戶:
將服務器的這些文件
橋接和路由模式編譯安裝open***虛擬專用網絡

註銷證書
cd /usr/local/openv_n/openv_n-2.1_rc21/easy-rsa/2.0
source ./vars
./revoke-full client3
橋接和路由模式編譯安裝open***虛擬專用網絡

搭建期間用到的測試明命令
route add -net 192.168.8.146 netmask 255.255.255.0 gw 10.168.10.4
route add -net 192.168.8.146 netmask 255.255.255.0 gw br0
route del -net 10.168.10.0/24 gw 192.168.8.146
route add -net 10.168.10.0/24 gw 192.168.8.128
brctl addbr br0
brctl addif br0 eth1
brctl addif br0 tap0
tcpdump -nn icmp -i eth0
tcpdump -nn icmp -i br0
tcpdump -nn icmp -i tun0
iptables -t nat -A POSTROUTING -s 10.168.10.0/24 -o eth0 -j MASQUERADE
iptables -nL -t nat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章