启动时添加 IP 路由和规则

启动时添加 IP 路由和规则

我目前正在通过 路由一些标记的数据包eth0。但是,每次系统重新启动时,我都必须应用路由规则。我总是必须重新输入的两个命令是

ip rule add fwmark 3 table 3
ip route add default via 192.168.0.1 table 3

网关是eth0192.168.0.1尝试在和中放置这些命令/etc/rc.local/etc/network/interfaces但在这两种情况下,我仍然必须手动运行它们。有人对每次启动时在哪里/如何运行这些命令有什么建议吗?

答案1

/etc/network/interfaces仅可以使用文件来执行此操作。

您只需将add route命令放在所需的界面下,并在该命令前面放置post-uppre-down关键字。

post-up关键字会在您启动该接口后将该路由添加到路由表,而pre-down关键字会在您关闭该接口之前将该路由删除。

例如:要在接口
上添加静态路由,文件应该是eth0/etc/network/interfaces

auto eth0
iface eth0 inet static
    ...
    ...
    post-up ip route replace default via 192.168.0.1
    pre-down ip route delete default via 192.168.0.1 || true

答案2

将您的命令放入 shell 脚本(例如 /usr/local/sbin/myrouting)中,并使其可执行。

您可以在 /etc/crontab 或根 crontab 中使用 cron 和 @reboot 目标,例如 /etc/crontab

@reboot root /usr/local/sbin/myrouting

或 root crontab

@reboot /usr/local/sbin/myrouting 

您也可以使用 systemd 来完成此操作。

创建 systemd 单元文件 /etc/systemd/system/myrouting.service

[Unit]
after=network

[Service]
ExecStart=/usr/local/sbin/myrouting

[Install]
WantedBy=default.target

然后启用它

systemctl enable myrouying.service
Created symlink /etc/systemd/system/default.target.wants/myrouting.service → /etc/systemd/system/myrouting.service.

答案3

您还可以将这些命令添加到 /etc/rc.local,并且不要忘记使其可执行:

touch stagingfile.txt

echo "ip rule add fwmark 3 table 3" >> stagingfile.txt
echo "ip route add default via 192.168.0.1 table 3" >> stagingfile.txt

sudo mv stagingfile.txt /etc/rc.local
chmod +x /etc/rc.local

应该管用

相关内容