求助:如何通过systemd-networkd配置静态路由?
用systemd-networkd配置静态路由连接10.17.12.0子网
没问题,用systemd-networkd配置静态路由其实很 straightforward,我帮你一步步捋清楚:
首先先确认systemd-networkd服务状态,确保它在运行:
systemctl status systemd-networkd
如果没运行,先启动并设置开机自启:
sudo systemctl enable --now systemd-networkd
编写.network配置文件
systemd-networkd的网络配置文件都放在/etc/systemd/network/目录下,我们需要为你的网卡创建或修改一个.network文件(文件名前缀数字越小,优先级越高)。
假设你的网卡名称是eth0(可以用ip link show查看实际名称),创建/etc/systemd/network/10-static-route.network文件:
[Match] Name=eth0 # 替换成你的实际网卡名 [Network] # 如果你的网卡已经有静态IP配置,这部分可以保留或根据实际情况调整 Address=192.168.1.100/24 # 替换成本机静态IP和子网掩码 Gateway=192.168.1.1 # 替换成你的默认网关(如果需要) [Route] # 目标子网,这里假设是/24掩码,根据实际情况调整 Destination=10.17.12.0/24 # 下一跳网关:必须是能直接访问到的、可以路由到目标子网的IP地址 Gateway=192.168.1.254 # 替换成实际的下一跳网关 # 可选:设置路由优先级,数值越小优先级越高,默认是1024 Metric=100
重载配置并重启服务
写完配置文件后,需要让systemd重新加载配置,然后重启服务生效:
sudo systemctl daemon-reload sudo systemctl restart systemd-networkd
验证路由是否生效
执行以下命令查看路由表,确认目标子网的路由条目存在:
ip route show | grep 10.17.12.0
如果输出类似10.17.12.0/24 via 192.168.1.254 dev eth0 proto static metric 100,说明配置成功了。
常见排坑点
- 确认网卡名称正确:用
ip link show核对,别把enp0s3写成eth0了 - 下一跳网关必须可达:先ping一下网关地址,确保能通
- 配置文件权限:确保文件是
root:root所有,权限为644,否则systemd可能读取不了 - 防火墙:检查本机防火墙是否允许和目标子网的通信,必要时添加规则
内容的提问来源于stack exchange,提问作者Lily Mara




