Jump to content
  • 0

Странная работа NAT и маршрутизации


Something

Question

У меня на кинетике через opkg установлен Debian, поэтому все команды выполняю через него. 

И получается странная ерунда с маршрутизацией. У меня подключено два(на самом деле больше) внешних интерфейсов для выхода наружу. Если я ставлю маршрутизацию безусловно на dst ip все работает, если через маркирование пакетов, то глючит :(

Создаю отдельную таблицу для маршрутов

ip rule add table 1001 priority 1001
ip route add default via zzz.zzz.zzz.zzz table 1001
ip rule add to xxx.xxx.xxx.xxx table 1001

Делаю с клиента из локальной сети трейс, все идет через интерфейс zzz.zzz.zzz.zzz и отлично работает.

Делаю немного по другому:
ip rule add fwmark 0x1 table 1001 priority 1001
ip route add default via zzz.zzz.zzz.zzz table 1001

и потом
iptables-legacy -t mangle -A PREROUTING --dst xxx.xxx.xxx.xxx -j MARK --set-mark 0x1

Все начинает работать странно, трейс показывает, что все проходит правильным маршрутом. Но при попытке получения данных после нескольких пакетов соединение зависает и потом рвется по таймаутам. Можно сделать wget с xxx.xxx.xxx.xxx скажем файла в 5Кб, это без проблем, иногда можно даже 1Мб, предугадать когда произойдет зависание соединения невозможно. Ставлю "жесткую" маршрутизацию, проблем нет. Ставлю через маркировку пакетов, и работать становится невозможно :( 

P.S. Да, это связано с попыткой обхода некоторых ограничений РКН :) Поэтому список IP адресов для альтернативной маршрутизации мне удобнее хранить в ipset. Просто чтобы не искать ошибки в других местах я упростил задачу по максимуму, я реально подключил кинетик вторым интерфейсом(без vpn), через другой маршрутизатор в сеть и пытаюсь локализовать проблему. Если смотреть на кинетике что ходит по интерфейсу zzz.zzz.zzz.zzz, то иногда там видно, что пытаются пройти пакеты на адрес локальной сети откуда идет запрос, есть предположение, что у NAT сносит крышу и он начинает дурить. Но это не точно. 

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Да вроде это вполне нормальная вещь, когда надо что либо делать с большими объемами IP адресов. Особенно, если изменения идут динамически. На обычном дебиане проблем с этим нет. 

Link to comment
Share on other sites

  • 0

Путем анализа tcpdump со всех сторон было выяснено, что не все пакеты маркируются как надо, соответственно не все идут по нужному маршруту, проблема решилась добавлением еще одного правила:
iptables-legacy -t mangle -A PREROUTING --dst xxx.xxx.xxx.xxx -j CONNMARK --set-mark 0x1

При этом предыдущее правило должно остаться, их должно быть два. Если убрать предыдущее и оставить только новое, то ничего работать не будет. 

Теперь осталось только найти, где в кинетике прописать добавление своих правил при применении/изменении настроек  :) 

 

Link to comment
Share on other sites

  • 0
4 часа назад, Something сказал:

Теперь осталось только найти, где в кинетике прописать добавление своих правил при применении/изменении настроек  :) 

 

Opkg -> netfilter.d

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...