Назад | Перейти на главную страницу

Добавление IP-маршрутов и правил при запуске

В настоящее время я маршрутизирую некоторые отмеченные пакеты через eth0. Однако мне приходится применять правила маршрутизации каждый раз при перезагрузке системы. Две команды, которые мне всегда приходится вводить повторно:

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

Шлюз для eth0 будучи 192.168.0.1 Я попытался разместить эти команды в обоих /etc/rc.local и /etc/network/interfaces, и в обоих случаях мне все равно пришлось запускать их вручную. Есть ли у кого-нибудь предложения относительно того, где / как запускать эти команды при каждом запуске?

Вы можете сделать это, используя /etc/network/interfaces только файл.

Вам просто нужно положить add route под нужным интерфейсом и поместите post-up или pre-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

Поместите свои команды в сценарий оболочки, например. / usr / local / sbin / myrouting и сделайте его исполняемым.

Вы можете использовать cron и цель @reboot в / etc / crontab или корневом crontab, например. / 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.

вы также можете добавить эту команду в /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

должно сработать