linux里怎么永久性添加路由

说实话,在Linux系统里设置网关和路由,不同发行版确实有点折腾。
我之前在CentOS 6 上搞过,网关设置倒是挺简单,直接改/etc/sysconfig/network里的GATEWAY就行,比如写成GATEWAY=1 9 2 .1 6 8 .0.2 5 4 ,重启系统就生效了。

但要说添加路由,我遇到过不少坑。
像你说的在/etc/rc.d/rc.local里加route add ...这种做法,当年我试过,确实能在启动时自动跑命令。
不过说实话,这种rc.local的方式现在用得少了,因为很多新系统都不推荐用这个了,容易出问题。
我记得当时在一个老服务器上弄,重启后突然发现网络卡了,一查发现rc.local里的命令执行出错没报错,白费功夫。

更有意思的是用iptables或者nftables搞静态路由。
比如你提到的MASQUERADE,我之前给一个需要NAT的虚拟机配置时,就是在/etc/sysconfig/network-scripts/ifcfg-eth0里加上了POSTROUTING那部分。
这种做法的好处是跟网络接口绑定,比较稳定。
但缺点是配置复杂,特别是iptables规则一多,排查起来跟解谜似的。
我当时为了弄明白一个POSTROUTING的链怎么写,熬了两个晚上,最后发现一个子网掩码写错了,真是哭笑不得。

现在系统我更倾向于用systemd-networkd这种新玩意儿。
在/etc/systemd/network/里写个.netdev文件定义接口,再写个.network文件配置路由。
比如这样:
[Match] Name=eth0
[Network] Address=1 9 2 .1 6 8 .1 .1 00/2 4 Gateway=1 9 2 .1 6 8 .1 .1 Route=1 9 2 .1 6 8 .2 .0/2 4 via 1 9 2 .1 6 8 .1 .1 dev eth0
重启后systemd会自动应用这些配置。
我个人觉得这种方式更现代,至少比老一套rc脚本能管理得好些。
当然,前提是你的系统支持systemd,老的红帽系除外。

至于iproute命令,那绝对是必备的。
我经常用ip route show或者ip rule show来检查路由表。
记得有一次给服务器配置多路径路由,手动加了几条规则后,系统居然卡了。
用ip rule show一查,发现规则顺序搞错了,把默认路由给覆盖了。
赶紧调整顺序重启,总算搞定了。

说白了,永久添加路由的方法这么多,到底选哪个得看你的系统环境和需求。
老系统可能只能用rc.local,新系统systemd是首选。
iptables虽然强大但容易出错。
我个人现在倾向于把网络配置文件都放在一个统一的目录下,比如/etc/network/,然后写个启动脚本在rc.local里调用ip route add命令,这样既利用了systemd的稳定性,又保留了传统方式的灵活性。
当然这只是我的做法,不一定适合所有人。

如何配置Linux静态路由 永久路由添加实现步骤

CentOS/RHEL永久静态路由,编辑ifcfg文件,加POSTUP脚本,重启网络。

Debian/Ubuntu,编辑interfaces或netplan文件,重启networking。

注意,别冲突,网关通,重启后看。