Linux系统添加路由
在 Linux 系统中添加路由主要涉及 临时路由(重启失效)和 永久路由(重启保留)两种方式。以下是详细操作指南:
一、临时添加路由(重启失效)
使用 ip route
或 route
命令(推荐 ip route
,功能更强大)。
1. 查看当前路由表
ip route show
# 或
route -n
2. 添加静态路由
语法:
sudo ip route add <目标网络/子网掩码> via <网关IP> dev <接口名>
示例:
• 添加一条到 192.168.2.0/24
的路由,网关为 192.168.1.1
,通过网卡 eth0
:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
• 添加默认网关(默认路由):
sudo ip route add default via 192.168.1.1 dev eth0
3. 删除路由
sudo ip route del <目标网络/子网掩码>
# 示例:删除默认路由
sudo ip route del default via 192.168.1.1 dev eth0
二、永久添加路由(重启保留)
不同 Linux 发行版的配置文件可能不同,常见方法如下:
1. 通用方法(适用于大多数系统)
编辑 /etc/network/interfaces
(Debian/Ubuntu)或 /etc/sysconfig/network-scripts/route-<接口名>
(CentOS/RHEL)。
Debian/Ubuntu:
- 编辑
/etc/network/interfaces
:sudo nano /etc/network/interfaces
- 在网卡配置块中添加:
up ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
CentOS/RHEL:
- 创建或编辑路由配置文件(如
route-eth0
):sudo nano /etc/sysconfig/network-scripts/route-eth0
- 添加内容:
192.168.2.0/24 via 192.168.1.1 dev eth0
2. 使用 netplan
(Ubuntu 18.04+)
- 编辑 Netplan 配置文件(如
/etc/netplan/01-netcfg.yaml
):sudo nano /etc/netplan/01-netcfg.yaml
- 添加
routes
配置:network:version: 2ethernets:eth0:addresses: [192.168.1.10/24]gateway4: 192.168.1.1routes:- to: 192.168.2.0/24via: 192.168.1.1
- 应用配置:
sudo netplan apply
3. 通过 rc.local
(不推荐,但兼容旧系统)
- 编辑
/etc/rc.local
:sudo nano /etc/rc.local
- 在
exit 0
前添加路由命令:ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
- 确保
rc.local
有执行权限:sudo chmod +x /etc/rc.local
三、高级用法
1. 策略路由(基于源 IP 的路由)
使用 ip rule
和 ip route
实现多路由表:
# 创建自定义路由表(如表编号 100)
echo "100 custom_table" >> /etc/iproute2/rt_tables# 添加路由到自定义表
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 table custom_table# 添加策略规则:来自 192.168.1.10 的流量使用 custom_table
ip rule add from 192.168.1.10 lookup custom_table
2. 持久化策略路由
将命令写入 /etc/network/interfaces
或单独的启动脚本。
四、验证与调试
-
查看路由表:
ip route show
-
测试连通性:
ping 192.168.2.100 traceroute 192.168.2.100
-
检查网关可达性:
ping 192.168.1.1 # 确认网关是否可达
五、注意事项
- 网关必须可达:确保网关 IP 与当前网络接口在同一子网。
- 避免路由冲突:若目标网络已存在其他路由,新路由可能不生效。
- 备份配置:修改永久路由前备份配置文件。
- 防火墙限制:若路由生效但通信失败,检查防火墙规则(如
iptables
/nftables
)。
附:快速命令参考
操作 | 命令 |
---|---|
添加临时路由 | sudo ip route add <目标> via <网关> |
删除路由 | sudo ip route del <目标> |
查看路由表 | ip route 或 route -n |
持久化路由(Ubuntu) | 修改 /etc/netplan/*.yaml |
持久化路由(CentOS) | 修改 /etc/sysconfig/network-scripts/route-<接口> |