<QNAP 453D QTS-5.x> 日志记录:修改 NAS 默认路由 由于 QVPN 的默认路由设置无效 所有 Docker 中运行的 Containers 将使用 QVPN 设置的连接

前言:

买个阿里 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 连接闪断什么的。 

文章写到这儿,又等了些时间,路由表没变化:

再观察

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值