作者:gunpen
這篇完全為了記錄前面有錯或不完善的指令碼,主要是怕以後忘記,需結合上篇實操。
一、群暉端
1、把群暉儲存iptables規則指令碼寫進開機啟動項
vi /etc/rc
輸入i
在倒數第二行,exit 0之前插入以下語句
/root/tianluyou。sh
:wq
退出
2、蒲公英虛擬網路的連通性檢測指令碼
cd /usr/local/
mkdir pgyvpn
cat > /usr/local/pgyvpn/check_pgyvpn-ds。sh <
#!/bin/bash
#檢測蒲公英虛擬網路連結暢通性
if [ $(ping -c 1 -W 1 172。16。1。189 | grep time | grep -v grep | wc -l) -eq 1 ];then
echo “PGYVPN network off”
#蒲公英VPN網路不通
docker restart -t=30 pgyvpn
#重啟 pgyvpn
else
echo “PGYVPN network on”
fi
exit 0
EOF
chmod +x /usr/local/pgyvpn/check_pgyvpn-ds。sh
3、到對端PVE網段連通性檢測指令碼
cat > /usr/local/pgyvpn/check_route-ds。sh <
#!/bin/bash
#檢測PVE內網連結暢通性
if [ $(ping -c 1 -W 1 192。168。15。6 | grep time | grep -v grep | wc -l) -eq 1 ];then
echo “PVE network unreachable”
#至PVE的靜態路由未啟動
route add -net 192。168。15。0 netmask 255。255。255。0 gw 172。16。2。177
#啟動至PVE的靜態路由表
else
echo “PVE network smooth”
fi
exit 0
EOF
chmod +x /usr/local/pgyvpn/check_route-ds。sh
4、新增守護指令碼進crontab檔案
vi /etc/crontab
*/30 * * * * root /usr/local/pgyvpn/check_pgyvpn-ds
#第30分鐘檢測一次pgyvpn網路暢通性(ping本機分配到的蒲公英虛擬網路IP)
*/5 * * * * root /usr/local/pgyvpn/check_route-ds
#每5分鐘檢測一次靜態路由(ping對端PVE網段IP)
vi的操作方法同上。
二、PVE端
1、PVE安裝docker
(1)更換國內源
首先刪除PVE自帶的要收費的企業源:
rm -rf /etc/apt/sources。list。d/pve-enterprise。list
然後對應PVE版本,修改 /etc/apt/sources。list 檔案,我的是7。X版,如下:
deb https://mirrors。tuna。tsinghua。edu。cn/debian/ bullseye main contrib non-free
deb https://mirrors。tuna。tsinghua。edu。cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors。tuna。tsinghua。edu。cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors。tuna。tsinghua。edu。cn/debian-security bullseye-security main contrib non-free
deb https://mirrors。tuna。tsinghua。edu。cn/proxmox/debian bullseye pve-no-subscription
更新並重啟
apt-get update && apt-get dist-upgrade -y
(2)安裝docker
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download。docker。com/linux/debian/gpg | apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository “deb [arch=amd64] https://download。docker。com/linux/debian $(lsb_release -cs) stable”
apt-get update && apt-get install docker-ce -y
(3)docker安裝 benzbrake/pgyvpn
可以直接命令列拉取映象:docker pull benzbrake/pgyvpn
我是先給PVE裝上portainer,在portainer介面裡完成映象拉取和部署容器。
映象拉取後,按照群暉一樣的docker安裝方法執行:(注意連續命令列後面加上反斜槓,前篇文章被大媽搞掉了,看下面截圖)
docker run -d
——restart=always
——device=/dev/net/tun
——net=host
——cap-add=NET_ADMIN
——cap-add=SYS_ADMIN
——env PGY_USERNAME=你的pgy使用者名稱
——env PGY_PASSWORD=你的pgy密碼
——name pgyvpn
benzbrake/pgyvpn
2、卸掉原來安裝的pgyvpn軟體
安裝好docker版pgyvpn後,發現虛擬ip地址沒改變,我就嘗試把PVE主機上安裝的pgyvpn解除安裝掉,果然沒毛病。
dpkg -r pgyvpn
3、修改開機啟動項
nano /etc/rc。local
#!/bin/bash下面加入這兩內容:
bash /root/tianluyou。sh
bash /usr/local/pgyvpn/check_route-pve。sh
Ctrl+X,輸入Y,儲存退出
4、蒲公英虛擬網路的連通性檢測指令碼
cd /usr/local/
mkdir pgyvpn
cat > /usr/local/pgyvpn/check_pgyvpn-pve。sh <
#!/bin/bash
#檢測蒲公英虛擬網路連結暢通性
if [ $(ping -c 1 -W 1 172。16。2。177 | grep time | grep -v grep | wc -l) -eq 1 ];then
echo “PGYVPN network off”
#蒲公英VPN網路不通
docker restart -t=30 pgyvpn
#重啟 pgyvpn
else
echo “PGYVPN network on”
fi
exit 0
EOF
chmod +x /usr/local/pgyvpn/check_pgyvpn-pve。sh
5、到對端群暉網段連通性檢測指令碼
cat > /usr/local/pgyvpn/check_route-pve。sh <
#!/bin/bash
#檢測DSM內網連結暢通性
if [ $(ping -c 1 -W 1 192。168。100。218 | grep time | grep -v grep | wc -l) -eq 1 ];then
echo “DSM network unreachable”
#至DSM的靜態路由未啟動
route add -net 192。168。100。0 netmask 255。255。255。0 gw 172。16。1。189
#啟動至DSM的靜態路由表
else
echo “DSM network smooth”
fi
exit 0
EOF
chmod +x /usr/local/pgyvpn/check_route-pve。sh
6、新增守護指令碼進crontab檔案
nano /etc/crontab
*/30 * * * * root bash /usr/local/pgyvpn/check_pgyvpn-pve
#第30分鐘檢測一次pgyvpn網路暢通性(ping本機分配到的蒲公英虛擬網路IP)
*/5 * * * * root bash /usr/local/pgyvpn/check_route-pve
#每5分鐘檢測一次靜態路由(ping對端DSM網段IP)
Ctrl+X,輸入Y,儲存退出
(以上所寫指令碼也可以用vi或nano命令建立及編輯,這樣更便於檢查)
三、docker的一些操作技巧
1、啟動一個已經停止的容器
docker start 容器ID或容器名,網上建議使用容器ID
(1) 透過docker start pgyvpn 啟動容器
(2) 透過docker ps 檢視當前啟動的容器列表
2、停止一個正在執行的容器
(1) docker stop 容器ID或容器名
引數 -t:關閉容器的限時,如果超時未能關閉則用kill強制關閉,預設值10s,這個時間用於容器的自己儲存狀態,如:docker stop -t=60 容器ID或容器名
(2) docker kill 容器ID或容器名 ——直接關閉容
3、重啟一個容器
docker restart 容器ID或容器名 :不管容器是否啟動,直接重啟容器
docker restart 引數
-t:關閉容器的限時,如果超時未能關閉則用kill強制關閉,預設值10s,這個時間用於容器的自己儲存狀態
4、進入pgyvpn容器的裡面
docker exec -it pgyvpn /bin/bash
進入容器裡面後,輸入pgyvpn即可檢視蒲公英訪問端執行狀態,然後輸入命令退出
exit
四、總結
這週末就要回老家了,折騰也算告一段落,真正的體驗得過段時間,下面先上幾張圖吧。