前言:
买个阿里 VPM 最小配置的那个,并选择放在了日本,想使用它连接 只能用 “日本IP” 的服务。
找了一个非“免费”的用于测试,先在 QNAP NAS 上的 QVPN App 配置了连接,但在设置为默认后,没有变化。
解决:TS-453D 路由
一、工具
工具是用来显示:访问 Internet 的 IP 地址
1. 更新了 <Project-23 Navigator Portal> 在头部显示 IP 与位置

2. Whomai website: IP Address Lookup | Geolocation

前者是在 NAS 的 Docker 中运行, 后者是浏览器打开。 都可以知道在使用的哪个出口。
二、QNAP QVPN 设置

图中绿框,点它左边的 “Add” ,这个看字儿填就行。完成会多出红色这行。然后点绿框 “Use VPN as NAS Default Gateway" :

三、检查
1. 使用 Docker 上的 Navigator Container APP.

2. 命令:traceroute google.com
-sh: tracerouter: command not found
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # traceroute google.com
traceroute to google.com (142.250.114.113), 30 hops max, 46 byte packets
1 192.168.1.254 (192.168.1.254) *ms *ms *ms
2 10.59.62.230 (10.59.62.230) *ms *ms *ms
3 107.243.2.196 (107.243.2.196) *ms^C
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] #
隐藏了时间,以免能推算出来位置。
3. 命令:ip router
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # ip route
default via 192.168.1.254 dev br0
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1
10.0.5.0/24 dev docker0 proto kernel scope link src 10.0.5.1
10.0.7.0/24 dev lxdbr0 proto kernel scope link src 10.0.7.1
10.102.80.0/24 dev wgc3001 scope link
10.102.80.191 dev wgc3001 scope link
127.0.0.0/8 dev lo scope link
169.254.0.0/16 dev br-fc5949127c05 proto kernel scope link src 169.254.7.124
172.29.0.0/22 dev br-f0b44ddf25ba proto kernel scope link src 172.29.0.1
172.29.20.0/22 dev br-8e0d48d44e44 proto kernel scope link src 172.29.20.1
172.30.0.0/22 dev br-1e33f661a46e proto kernel scope link src 172.30.0.1
172.30.4.0/22 dev br-39e4452618fc proto kernel scope link src 172.30.4.1
172.30.8.0/22 dev br-7566ff69eacf proto kernel scope link src 172.30.8.1
172.30.12.0/22 dev br-20fb254fe18c proto kernel scope link src 172.30.12.1
192.168.0.0/16 dev br0 proto kernel scope link src 192.168.1.8
192.168.0.0/16 dev br0 scope link
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] #
三、故障 默认路由没生效

发现:QNAP NAS 系统没有启用 QVPN 中的默认路由。

- 在 ip route 命令中,可以看到 默认路由,还是使用 br0 (第一个红框中)
- QVPN 建立的连接是 wgc3001 (第二个红框)
- proto kernel 这些是 Docker 网络 (第三个红框)
四、用脚本解决 vpn_route_switcher.sh
1. 创建脚本:vpn_route_switcher.sh
在脚本里 wgc3001 是我系统中的 QVPN 创建的接口, 你要根据你自己的系统更改。
# 创建脚本
cat > vpn_route_switcher.sh << 'EOF'
#!/bin/sh
# 显示当前默认路由
show_current_route() {
echo "当前默认路由:"
ip route show default
}
# 切换到VPN路由
switch_to_vpn() {
echo "切换到VPN路由..."
ip route del default
ip route add default dev wgc3001
echo "已切换到VPN路由"
show_current_route
}
# 恢复默认路由
restore_default() {
echo "恢复默认路由..."
ip route del default
ip route add default via 192.168.1.254 dev br0
echo "已恢复默认路由"
show_current_route
}
# 显示使用方法
usage() {
echo "使用方法:"
echo " $0 show - 显示当前默认路由"
echo " $0 vpn - 切换到VPN路由"
echo " $0 default - 恢复默认路由"
}
# 逻辑
case "$1" in
show)
show_current_route
;;
vpn)
switch_to_vpn
;;
default)
restore_default
;;
*)
usage
;;
esac
EOF
# 添加执行权限
chmod +x ./vpn_route_switcher.sh
以上代码,直接复制到 shell 中, 会创建一个 SHELL 批处理文件: vpn_route_switcher.sh 并在结束前 赋予执行权力,按回车就行。
如果,你的 SHELL 不支持中文,替换里面中文,再运行。
1.1 算了,这个是用英文注释的 sh script:
cat > vpn_route_switcher.sh << 'EOF'
#!/bin/sh
# Show current default route
show_current_route() {
echo "Current default route:"
ip route show default
}
# Switch to VPN route
switch_to_vpn() {
echo "Switching to VPN route..."
# Check if wgc3001 interface exists
if ! ip link show wgc3001 > /dev/null 2>&1; then
echo "Error: VPN interface wgc3001 not found"
exit 1
fi
# Delete current default route
ip route del default || echo "No default route to delete"
# Add VPN route
if ip route add default dev wgc3001; then
echo "Successfully switched to VPN route"
show_current_route
else
echo "Error: Failed to add VPN route"
restore_default
exit 1
fi
}
# Restore default route
restore_default() {
echo "Restoring default route..."
# Delete current default route
ip route del default || echo "No default route to delete"
# Add default route
if ip route add default via 192.168.1.254 dev br0; then
echo "Successfully restored default route"
show_current_route
else
echo "Error: Failed to restore default route"
exit 1
fi
}
# Show usage
usage() {
echo "Usage:"
echo " $0 show - Show current default route"
echo " $0 vpn - Switch to VPN route"
echo " $0 default - Restore default route"
}
# logic
case "$1" in
show)
show_current_route
;;
vpn)
switch_to_vpn
;;
default)
restore_default
;;
*)
usage
;;
esac
EOF
chmod +x ./vpn_route_switcher.sh
2. 介绍批处理 vpn_route_switcher.sh 使用
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # ./vpn_route_switcher.sh
使用方法:
./vpn_route_switcher.sh show - 显示当前默认路由
./vpn_route_switcher.sh vpn - 切换到VPN路由
./vpn_route_switcher.sh default - 恢复默认路由
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] #
直接运行,会提示“使用方法”,参数:
| show | 显示当前的路由表 |
| vpn | 切换到 QVPN 配置的连接 |
| default | 恢复默认路由 |
3. 批处理运行演示:
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # ./vpn_route_switcher.sh
使用方法:
./vpn_route_switcher.sh show - 显示当前默认路由
./vpn_route_switcher.sh vpn - 切换到VPN路由
./vpn_route_switcher.sh default - 恢复默认路由
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # ./vpn_route_switcher.sh show
当前默认路由:
default via 192.168.1.254 dev br0
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1
10.0.5.0/24 dev docker0 proto kernel scope link src 10.0.5.1
10.0.7.0/24 dev lxdbr0 proto kernel scope link src 10.0.7.1
10.102.80.0/24 dev wgc3001 scope link
10.102.80.191 dev wgc3001 scope link
127.0.0.0/8 dev lo scope link
169.254.0.0/16 dev br-fc5949127c05 proto kernel scope link src 169.254.7.124
172.29.0.0/22 dev br-f0b44ddf25ba proto kernel scope link src 172.29.0.1
172.29.20.0/22 dev br-8e0d48d44e44 proto kernel scope link src 172.29.20.1
172.30.0.0/22 dev br-1e33f661a46e proto kernel scope link src 172.30.0.1
172.30.4.0/22 dev br-39e4452618fc proto kernel scope link src 172.30.4.1
172.30.8.0/22 dev br-7566ff69eacf proto kernel scope link src 172.30.8.1
172.30.12.0/22 dev br-20fb254fe18c proto kernel scope link src 172.30.12.1
192.168.0.0/16 dev br0 proto kernel scope link src 192.168.1.8
192.168.0.0/16 dev br0 scope link
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # ./vpn_route_switcher.sh vpn
切换到VPN路由...
已切换到VPN路由
当前默认路由:
default dev wgc3001 scope link
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1
10.0.5.0/24 dev docker0 proto kernel scope link src 10.0.5.1
10.0.7.0/24 dev lxdbr0 proto kernel scope link src 10.0.7.1
10.102.80.0/24 dev wgc3001 scope link
10.102.80.191 dev wgc3001 scope link
127.0.0.0/8 dev lo scope link
169.254.0.0/16 dev br-fc5949127c05 proto kernel scope link src 169.254.7.124
172.29.0.0/22 dev br-f0b44ddf25ba proto kernel scope link src 172.29.0.1
172.29.20.0/22 dev br-8e0d48d44e44 proto kernel scope link src 172.29.20.1
172.30.0.0/22 dev br-1e33f661a46e proto kernel scope link src 172.30.0.1
172.30.4.0/22 dev br-39e4452618fc proto kernel scope link src 172.30.4.1
172.30.8.0/22 dev br-7566ff69eacf proto kernel scope link src 172.30.8.1
172.30.12.0/22 dev br-20fb254fe18c proto kernel scope link src 172.30.12.1
192.168.0.0/16 dev br0 proto kernel scope link src 192.168.1.8
192.168.0.0/16 dev br0 scope link
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] # ./vpn_route_switcher.sh default
恢复默认路由...
已恢复默认路由
当前默认路由:
default via 192.168.1.254 dev br0
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1
10.0.5.0/24 dev docker0 proto kernel scope link src 10.0.5.1
10.0.7.0/24 dev lxdbr0 proto kernel scope link src 10.0.7.1
10.102.80.0/24 dev wgc3001 scope link
10.102.80.191 dev wgc3001 scope link
127.0.0.0/8 dev lo scope link
169.254.0.0/16 dev br-fc5949127c05 proto kernel scope link src 169.254.7.124
172.29.0.0/22 dev br-f0b44ddf25ba proto kernel scope link src 172.29.0.1
172.29.20.0/22 dev br-8e0d48d44e44 proto kernel scope link src 172.29.20.1
172.30.0.0/22 dev br-1e33f661a46e proto kernel scope link src 172.30.0.1
172.30.4.0/22 dev br-39e4452618fc proto kernel scope link src 172.30.4.1
172.30.8.0/22 dev br-7566ff69eacf proto kernel scope link src 172.30.8.1
172.30.12.0/22 dev br-20fb254fe18c proto kernel scope link src 172.30.12.1
192.168.0.0/16 dev br0 proto kernel scope link src 192.168.1.8
192.168.0.0/16 dev br0 scope link
[/share/Multimedia/2024-MyProgramFiles/29.QTS_conf_files] #
五、已知问题
疑似 QNAP NAS 会恢复 默认路由表,我没有等 第二次,但在写这文章前,发现 Navigator App 顶部的“当前位置” 内容发生过变化,发现 ip route 的信息自己更改回来,可能是它的系统设计:能够始终保持网络连接。 也有可能是其它原因,如:QVPN 连接闪断什么的。
文章写到这儿,又等了些时间,路由表没变化:

再观察


2767

被折叠的 条评论
为什么被折叠?



