我的使用场景:
- 在极摩客
G3
mini
主机上安装了Proxmox VE 8
虚拟机系统,其中创建了iStoreOS
虚拟机系统。 iStoreOS
虚拟机已经成功配置了网络,实现了无线热点和无线桥接功能,其无线热点的SSID
为 “G3
”。iStoreOS
虚拟机上安装了openClash
,并成功配置和使用了代理服务。- 在树莓派上安装了
Ubuntu
系统,由于国内网络环境的不稳定性,需要随时切换默认网关,以便灵活地切换网络。
具体教程
相关内容请自己看注释修改
设置多网卡 IP
我的配置如下,树莓派连接 192.168.3.1
网关的网线并设置为默认网关,并且连接pve
虚拟机iStoreOS
软路由的wifi
,我的名称为 G3
网卡名称使用 ifconfig
或 ip a
查看
-
sudo vim /etc/netplan/00-cloud-init.yaml
(建议/etc/netplan
目录下在已有的配置上进行修改,如有需要,自行备份原来的内容)network: version: 2 # WiFi 配置 wifis: renderer: networkd wlan0: # 你自己的网卡名称 access-points: G3: # WiFi 名称 password: helloworld # WiFi 密码 dhcp4: true # 使用 DHCP 获取 IP 地址 optional: true addresses: [192.168.100.4/24] # 分配的 IP 地址及子网掩码 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS 服务器地址 # 有线网卡配置 ethernets: eth0: # 你自己的网卡名称 dhcp4: false # 禁用 DHCP addresses: [192.168.3.2/24] # 分配的 IP 地址及子网掩码 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS 服务器地址 routes: - to: default via: 192.168.3.1 # 默认网关 IP 地址
-
通过配置如下选项,为默认网关
routes: - to: default via: 192.168.3.1
-
切换网关
如果需要更换网关,走不同网关的网络,比如我连的 G3
网络,就是 iStoreOS
clash
代理的软路由
-
查看当前路由表:首先,您需要查看当前的路由表,以确保您知道正在使用的默认路由是通过哪个网络接口的。您可以使用下面的命令来查看路由表:
$ ip route show default via 192.168.3.1 dev eth0 default via 192.168.100.1 dev wlan0 proto dhcp src 192.168.100.119 metric 600
这将显示当前的路由表,其中包括默认路由信息,您可以查看哪个网络接口被用于默认路由。
-
更改默认路由:接下来,您可以使用
ip route
命令手动更改默认路由。假设您想要将流量从以太网接口 (eth0
) 切换到 WiFi 接口 (wlan0
),您可以使用以下命令:sudo ip route del default via <当前默认网关的IP> dev eth0 sudo ip route add default via <新的默认网关的IP> dev wlan0
将
<当前默认网关的IP>
替换为当前默认路由的网关 IP 地址,将<新的默认网关的IP>
替换为您想要设置为默认路由的新网关的 IP 地址。这将删除当前的默认路由并添加一个新的默认路由。 -
验证更改:最后,您可以再次运行
ip route show
命令来验证您的更改是否生效,确保新的默认路由已经正确地设置。
例如
将原本的使用 eth0
网口的 192.168.3.1
网关切换为使用 wlan0
的192.168.100.1
网关
# 先删除原来的路由
sudo ip route del default via 192.168.3.1 dev eth0
# 再添加新的路由
sudo ip route add default via 192.168.100.1 dev wlan0
如果需要换回来则
# 先删除原来的路由
sudo ip route del default via 192.168.100.1 dev wlan0
# 再添加新的路由
sudo ip route add default via 192.168.3.1 dev eth0
一键切换脚本
当然也可以使用 Shell
脚本达到快速切换的目的
-
sudo vim ~/change_via.sh
#!/bin/bash # 该脚本允许用户在运行 Ubuntu 的树莓派中轻松切换默认网关,适用于多网卡环境。 # 检查提供的参数数量 if [ "$#" -ne 2 ]; then echo "用法: $0 <网卡接口> <网关编号>" echo "示例: $0 wlan0 100" exit 1 fi # 提取参数 interface=$1 gateway_number=$2 # 根据提供的编号定义网关IP地址 case $gateway_number in 3) # 自己设置一个编号 new_gateway="192.168.3.1" # 根据需要修改用于网络3的目标网关 ;; 100) # 自己设置一个编号 new_gateway="192.168.100.1" # 根据需要修改用于网络100的目标网关 ;; # 添加更多的网关编号和对应的目标网关地址 *) echo "无效的网关编号,请选择合适的编号。" exit 1 ;; esac # 获取当前默认网关的IP地址 current_gateway=$(ip route show default | awk '/default/ {print $3}') # 检查当前默认网关是否已经是目标网关 if [ "$current_gateway" == "$new_gateway" ]; then echo "默认路由已经使用 $new_gateway 通过 $interface 接口。" exit 0 fi # 更改默认路由为目标网关 sudo ip route change default via $new_gateway dev $interface echo "默认路由已更新为通过 $interface 接口使用 $new_gateway。" # 打印新的公共IP地址以验证更改 echo "新的公共IP地址:" curl ipinfo.io
使用:
$ ./change_via.sh wlan0 100 $ ./change_via.sh eth0 3
要使脚本可以在任何目录下执行,您可以将脚本添加到系统的可执行路径中,例如 /usr/local/bin
目录。以下是如何完成这个步骤:
-
将脚本移动到可执行路径:
打开终端并执行以下命令:
sudo mv ~/change_via.sh /usr/local/bin/
这将把脚本移动到
/usr/local/bin/
目录下,这个目录是系统默认的可执行路径之一。 -
设置执行权限:
确保脚本具有执行权限,如果没有,请添加执行权限:
sudo chmod +x /usr/local/bin/change_via.sh
-
验证:
在终端中输入脚本名,看是否能够执行:
change_via.sh
如果没有出现权限错误并且脚本能够正常运行,那么您已经成功将脚本添加到系统的可执行路径中。您现在可以在任何目录下直接执行
change_via.sh
脚本了。
我的博客,欢迎前往: https://blog.ivwv.site/