单网卡Ubuntu Server 22.04自动切换家庭与办公静态网络配置方案咨询
嗨,很高兴能帮到你!针对你的需求,完全可以通过Netplan配合简单的脚本实现自动切换家庭和办公的静态网络配置,不用每次手动修改设置。下面我一步步给你讲具体怎么做:
第一步:配置Netplan多网络Profile
首先,我们为家庭和办公网络分别创建独立的Netplan配置文件,这样可以方便地启用/禁用对应的静态配置。
先查看你的WiFi接口名称,执行命令:
ip link
通常会显示类似wlp2s0或者wlan0的接口名,记下来后面要用。创建家庭网络配置文件
/etc/netplan/50-home.yaml,执行:sudo nano /etc/netplan/50-home.yaml
粘贴以下内容(记得替换成你自己的信息):
network: version: 2 renderer: NetworkManager wifis: wlp2s0: # 替换成你的WiFi接口名 dhcp4: no addresses: [192.168.0.100/24] # 家庭网络的静态IP gateway4: 192.168.0.1 # 家庭网关地址 nameservers: addresses: [192.168.0.1, 8.8.8.8] # 家庭DNS服务器 access-points: "Home-WiFi-Name": # 替换成你的家庭WiFi名称 password: "Home-WiFi-Password" # 替换成家庭WiFi密码
- 创建办公网络配置文件
/etc/netplan/50-office.yaml,执行:sudo nano /etc/netplan/50-office.yaml
粘贴以下内容(同样替换成办公网络的信息):
network: version: 2 renderer: NetworkManager wifis: wlp2s0: # 同样替换成你的WiFi接口名 dhcp4: no addresses: [192.168.1.100/24] # 办公网络的静态IP gateway4: 192.168.1.1 # 办公网关地址 nameservers: addresses: [192.168.1.1, 8.8.4.4] # 办公DNS服务器 access-points: "Office-WiFi-Name": # 替换成你的办公WiFi名称 password: "Office-WiFi-Password" # 替换成办公WiFi密码
- 生成并应用初始配置:
sudo netplan generate && sudo netplan apply
第二步:编写自动切换脚本
接下来写一个脚本,用来检测当前连接的WiFi SSID,自动切换对应的Netplan配置。
- 创建脚本文件
/usr/local/bin/switch-network.sh:sudo nano /usr/local/bin/switch-network.sh
粘贴以下内容(替换SSID名称):
#!/bin/bash # 获取当前连接的WiFi SSID current_ssid=$(iwgetid -r) # 根据SSID切换网络配置 if [ "$current_ssid" = "Home-WiFi-Name" ]; then sudo netplan apply --only 50-home echo "Successfully switched to home network profile" elif [ "$current_ssid" = "Office-WiFi-Name" ]; then sudo netplan apply --only 50-office echo "Successfully switched to office network profile" else echo "Warning: Unknown network SSID - $current_ssid" fi
给脚本添加执行权限:
sudo chmod +x /usr/local/bin/switch-network.sh可以先手动测试脚本是否生效:
sudo /usr/local/bin/switch-network.sh
切换WiFi后再运行一次,看看是否能正确切换配置。
第三步:让脚本自动触发运行
为了实现WiFi连接状态变化时自动切换,我们可以借助NetworkManager的dispatcher机制:
先确保安装了NetworkManager(Ubuntu Server默认可能没装):
sudo apt update && sudo apt install network-manager -y
然后启用并启动服务:sudo systemctl enable --now NetworkManager创建dispatcher触发脚本
/etc/NetworkManager/dispatcher.d/99-switch-network:sudo nano /etc/NetworkManager/dispatcher.d/99-switch-network
粘贴以下内容:
#!/bin/bash # 仅当WiFi连接成功(up状态)时执行切换脚本 if [ "$2" = "up" ]; then /usr/local/bin/switch-network.sh fi
- 给这个触发脚本添加执行权限:
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-switch-network
这样以后,每当你的笔记本连接到家庭或办公WiFi时,脚本就会自动触发,切换到对应的静态网络配置,完全不用手动操作啦!
备注:内容来源于stack exchange,提问作者Alasok Arandab

