LINUX.ORG.RU
решено ФорумAdmin

NAT в отдельную route table через ip rule

 , , ,


0

2

Привет, лор.
Есть система, где одна их сетевых карт смотрит в лан-порт модема, который настроен бриджем, а вторая сетевая карта в свитч и локалку, откуда будут приходить клиенты за интернетом.
Через бридж поднимается одно (пока что, потом будет несколько) pppoe соединение с интерфейсом inet0 и роуты добавляются в соответствующую таблицу роутов с таким же названием.

NAT через default route из таблицы main работает хорошо, но после добавления правила ip rule add from 192.168.100.62 table inet0, клиент с адресом 192.168.100.62 как бы начинает ходить через inet0, но наполовину: пинги проходят, трейсроуты проходят, часть сайтов (например гугл (поиск, ютуб, етц), яндекс, фейсбук) работают, но остальные сайты валятся по timeout.

Не могу понять что я сделал не так и почему интернет работает выборочно.

Сетью рулит NM, firewalld. Пробовал на системах Centos 8 и Fedora 31.

# firewall-cmd --get-zone-of-interface=inet0
external

# ip rule
0:	from all lookup local
32765:	from 192.168.100.62 lookup inet0
32766:	from all lookup main
32767:	from all lookup default

# ip r s t inet0
default via 100.104.128.1 dev inet0 proto static metric 20460 
100.104.128.1 dev inet0 proto kernel scope link src 100.104.247.157 metric 460


К сожалению, ни ваершарком ни тспдампом пользоваться не умею. Пишите какие еще логи/конфиги показать.



Последнее исправление: veyayawet (всего исправлений: 2)

Или ткните ссылкой на реализацию того, что я хочу сделать: чтобы все клиенты в интернет ходили через дефолт роуты системы, а определенные клиенты через пппое-соединение. Готов пожертвовать firewalld, если он будет мешать.

veyayawet
() автор топика
Последнее исправление: veyayawet (всего исправлений: 1)
Ответ на: комментарий от Deleted

Дело не в firewalld, потому что если его отключить и добавить одно-единственное правило в iptables (-t nat -A POSTROUTING -s 192.168.1.0/24 -o inet+ -j MASQUERADE), то ведёт себя ровно так же. Или ты зашёл только для того, чтобы сказать, что firewalld бяка? :)

veyayawet
() автор топика

Я в притык не могу понять одно, почему работают сайты гугла и яндекса, а остальные - нет. Ведь трейсроуты ходят так, как и должны. Пинговать могу любой хост. На сайт зайти - уже не могу.

veyayawet
() автор топика
Ответ на: комментарий от veyayawet

Пинговать могу любой хост. На сайт зайти - уже не могу.

Ванга моде: mtu?

aol ★★★★★
()

это у тебя есть в /etc/чем поднимается твой pppoe/ip-up.d/bla-bla-pppoe ?

#!/bin/sh
iptables -t mangle -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
bass ★★★★★
()
Ответ на: комментарий от bass

!!!!!!
Спасибо!

Я уже дошёл до того, что просто отрубил все интернеты, подключал pppoe как единственный и пытался его раздавать в сеть без дополнительных ip rule и таблиц роутов, но интернет раздавался также криво, как и со всем этим. После этого правила всё работает.

А можно вопрос: что это и зачем? Просто так нельзя взять и раздавать интернет, который пришёл из pppoe?

veyayawet
() автор топика
Последнее исправление: veyayawet (всего исправлений: 1)
Ответ на: комментарий от bass

тебе также нужно правило удаляющее это правило при ip-down pppoe, иначе их может накопиться много

Сделаю на постоянку одно правило с -o inet+, чтобы оно работало сразу для всех пппое, которые планируются подниматься.

Спасибо за ссылку и за решение.

veyayawet
() автор топика
Ответ на: комментарий от Anoxemian

Меня смущало то, что локально этот интернет прекрасно работал. После раздачи по локалке он уже не работал нормально. Я так и думал, что проблема где-то в МТУ, но не хватило ума понять где именно.

veyayawet
() автор топика
Ответ на: комментарий от bass

это у тебя есть в /etc/чем поднимается твой pppoe/ip-up.d/bla-bla-pppoe ?

#!/bin/sh
iptables -t mangle -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu

А диапазон обязательно? Оно вроде как и не совсем нужно.

hbars ★★★★★
()
Ответ на: комментарий от hbars

Конечно такой большой диапазон ненужен. Но тебе лучше знать что за клиенты у тебя в сети. Я больше 2000 не видел, и то это были voip спецжелезки.

bass ★★★★★
()
Последнее исправление: bass (всего исправлений: 2)
Ответ на: комментарий от bass

Вам написали про то что диапазон вообще не нужен.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.