電腦數碼 篇九:(續)無公網IP如何異地組網,純白嫖玩法指令碼修正

作者: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

電腦數碼 篇九:(續)無公網IP如何異地組網,純白嫖玩法指令碼修正

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

電腦數碼 篇九:(續)無公網IP如何異地組網,純白嫖玩法指令碼修正

四、總結

這週末就要回老家了,折騰也算告一段落,真正的體驗得過段時間,下面先上幾張圖吧。

電腦數碼 篇九:(續)無公網IP如何異地組網,純白嫖玩法指令碼修正

電腦數碼 篇九:(續)無公網IP如何異地組網,純白嫖玩法指令碼修正

電腦數碼 篇九:(續)無公網IP如何異地組網,純白嫖玩法指令碼修正

頂部