3. 边缘网关网络连接与静态IP配置
任务说明
本案例面向基于Linux的边缘网关设备(以Debian/Ubuntu系统为例),完成以下目标:配置有线以太网或无线Wi-Fi连接,将网关IP设置为静态地址,确保局域网内可稳定访问,并验证与外网的连通性。最终交付可直接在目标网关上执行的配置脚本与验证命令。
网络拓扑与配置目标
本案例采用静态IP方案:网关通过有线(eth0)或无线(wlan0)接入局域网,IP地址固定为192.168.1.100/24(有线)或192.168.1.101/24(无线),默认网关为192.168.1.1,DNS使用114.114.114.114。管理PC通过该网段访问网关。
实现代码
以下脚本configure_network.sh自动检测可用接口并完成静态IP配置,支持有线/无线两种模式:
#!/bin/bash
# 文件: configure_network.sh
# 功能: 边缘网关静态IP配置(有线/无线自动检测)
# 适用: Debian/Ubuntu (netplan)
set -e
# ---------- 配置参数 ----------
STATIC_IP_ETH="192.168.1.100/24"
STATIC_IP_WLAN="192.168.1.101/24"
GATEWAY="192.168.1.1"
DNS_SERVERS="114.114.114.114,8.8.8.8"
WIFI_SSID="your_wifi_ssid" # 按需修改
WIFI_PASSWORD="your_wifi_password" # 按需修改
# ---------- 检测无线网卡 ----------
detect_wifi() {
if iw dev 2>/dev/null | grep -q "Interface"; then
echo "wlan0"
else
echo ""
fi
}
# ---------- 生成netplan配置 ----------
generate_netplan() {
local iface="$1"
local ip="$2"
local wifi_conf=""
if [ "$iface" = "wlan0" ]; then
wifi_conf="
wifi:
wlan0:
dhcp4: false
addresses: [$ip]
routes:
- to: default
via: $GATEWAY
nameservers:
addresses: [$DNS_SERVERS]
access-points:
\"$WIFI_SSID\":
password: \"$WIFI_PASSWORD\""
else
wifi_conf="
ethernets:
eth0:
dhcp4: false
addresses: [$ip]
routes:
- to: default
via: $GATEWAY
nameservers:
addresses: [$DNS_SERVERS]"
fi
cat > /etc/netplan/99-static.yaml <<EOF
network:
version: 2
renderer: networkd
$wifi_conf
EOF
}
# ---------- 主流程 ----------
main() {
# 检查root权限
if [ "$EUID" -ne 0 ]; then
echo "请使用sudo运行此脚本"
exit 1
fi
# 检查netplan
if ! command -v netplan > /dev/null; then
echo "错误: 未检测到netplan,本脚本仅支持Ubuntu/Debian netplan系统"
exit 1
fi
# 检测有线接口
ETH_IFACE=$(ls /sys/class/net | grep -E "^eth|^en" | head -1 || true)
WIFI_IFACE=$(detect_wifi)
echo "检测到有线接口: ${ETH_IFACE:-无}"
echo "检测到无线接口: ${WIFI_IFACE:-无}"
# 优先配置有线,无有线则配置无线
if [ -n "$ETH_IFACE" ]; then
echo ">>> 配置有线静态IP: $STATIC_IP_ETH"
generate_netplan "eth0" "$STATIC_IP_ETH"
elif [ -n "$WIFI_IFACE" ]; then
echo ">>> 配置无线静态IP: $STATIC_IP_WLAN"
generate_netplan "wlan0" "$STATIC_IP_WLAN"
else
echo "错误: 未检测到可用网络接口"
exit 1
fi
# 应用配置
netplan apply
echo ">>> 网络配置已应用"
# 显示当前IP
ip -4 addr show | grep -E "inet " | grep -v "127.0.0.1"
}
main "$@"
执行与验证
执行配置:
# 赋予执行权限并运行
chmod +x configure_network.sh
sudo ./configure_network.sh
验证步骤与判定标准:
| 验证项 | 命令 | 通过标准 |
|---|---|---|
| 静态IP生效 | ip addr show eth0 或 ip addr show wlan0 | 显示配置的静态IP(如192.168.1.100/24),无DHCP分配地址 |
| 默认路由 | ip route | 存在 default via 192.168.1.1 条目 |
| 局域网连通 | 从管理PC执行 ping 192.168.1.100 | 收到ICMP回复,丢包率0% |
| 外网连通 | ping -c 4 114.114.114.114 | 4个包全部回复,0%丢包 |
| DNS解析 | nslookup baidu.com 或 getent hosts baidu.com | 返回域名对应的IP地址 |
| 重启持久化 | sudo reboot 后再次检查IP | 重启后IP仍为静态配置值 |
故障排查提示:若配置后无法连通外网,依次检查:① 网关地址是否与路由器LAN口IP一致;② 路由器是否开启DHCP静态绑定冲突;③ 无线连接时确认SSID与密码正确且信号强度足够;④ 使用sudo netplan try代替apply可在配置错误时自动回滚。