Как перевести "ip route add local 0.0.0.0/0 dev lo table 100 "to systemd-networkd?

Я пытаюсь настроить программный маршрутизатор с целью маршрутизации пакетов на прокси-сервер на маршрутизаторе. В учебнике, который я читаю, есть следующие правила маршрутизации:

ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

и следующие правила iptables:

iptables -t mangle -N V2RAY
iptables -t mangle -A V2RAY -d [Private Addresses] -j RETURN
iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A PREROUTING -j V2RAY

Все работает отлично. Но теперь я перехожу к использованию systemd-networkd , чтобы избежать сценариев запуска, и у меня возникают проблемы с преобразованием ip route add local 0.0.0.0/0 dev lo table 100 в язык systemd-networkd .

Мой первый вопрос: что делает этот маршрут? На данный момент я понимаю:

  • iptables добавить отметку 1 стены межсетевого экрана.
  • Правило выбирает все пакеты с отметкой 1 для использования таблицы маршрутизации 100.
  • Маршрут добавляется в таблицу 100, поэтому он применяется только к пакетам с меткой 1.
  • Часть «0.0.0.0/0» означает, что это маршрут по умолчанию.
  • Но что здесь означает «местный»? Почему устройство lo ? Зачем нам здесь нужен маршрут? Не может iptables справиться с этим напрямую?

Мой второй вопрос: как это сделать в systemd-networkd .

Для сопоставления пакетов с меткой 1 это кажется простым (и работало на моем маршрутизаторе):

[Match]
Name = *

[RoutingPolicyRule]
FirewallMark = 1
Table = 100

Я не уверен, требуется ли Name = * .Гарантирует ли это, что любой пакет от любого устройства, если он имеет отметку 1, будет маршрутизирован с использованием таблицы 100? Или я могу сопоставить здесь какое-то конкретное сетевое устройство?

Однако я не могу проложить маршрут в systemd-networkd. Моя попытка такова:

[Match]
Name = lo

[Route]
Type = local
Destination = 0.0.0.0/0
Table = 100

Но кажется, что это не дает никакого эффекта: ip route show table 100 на самом деле дает:

Error: ipv4: FIB table does not exist.
Dump terminated

Как мне подойти к этому?

1
задан 7 February 2021 в 18:31
1 ответ
[Match]
Name = lo

[RoutingPolicyRule]
FirewallMark = 1
Table = 100
Priority = 100

[Route]
Table = 100 
Destination = 0.0.0.0/0
Type = local

Объединить их в один файл

2
ответ дан 4 May 2021 в 13:42

Теги

Похожие вопросы