gaaronk Posted January 15, 2021 Share Posted January 15, 2021 Добрый день! Что то никак не могу решить задачу через web-ui или cli. Для сети 192.168.0.0/16 (доступной через туннель) при выходе в интернет и только туда, надо делать SNAT в адрес интерфейса. Для пример - команда CLI ip static 192.168.0.0 255.255.0.0 PPPoE0 прописывает не только SNAT, но и DNAT правило типа такого Chain _NDM_STATIC_DNAT (1 references) num pkts bytes target prot opt in out source destination 1 8 512 DNAT all -- * * 0.0.0.0/0 192.168.0.0/16 to:1.9.5.31 Что совсем мешает жить и работать Quote Link to comment Share on other sites More sharing options...
0 Werld Posted January 15, 2021 Share Posted January 15, 2021 Интересно. Видимо сеть 192.168.0.0/16 у вас соответствует public интерфейсу, поэтому роутер и создает правило dnat заодно с snat. Т.к. судя по справочнику "Если interface или network соответствует интерфейсу c уровнем безопасности public, то будет выполняться трансляция адреса назначения (DNAT). Если to-address соответствует интерфейсу c уровнем безопасности public, то будет выполняться трансляция адреса источника (SNAT)." У вас, видимо, получается выполняются оба условия вот и создаются сразу два правила. Как выход, что если попробовать интерфейсу, за которым у вас сеть 192.168.0.0/16 (я так понимаю, это впн интерфейс), присвоить security-level private? Quote Link to comment Share on other sites More sharing options...
0 gaaronk Posted January 15, 2021 Author Share Posted January 15, 2021 Сеть 192.168.0.0/16 не соответствует никакому интерфейсу. Она маршрутизируется в сторону интерфейса Wireguard0. На нем стыковочный адрес с маской /30. Он private interface Wireguard0 description VPN security-level private ip address 10.0.10.2 255.255.255.252 ip mtu 1400 ip tcp adjust-mss pmtu wireguard listen-port x.x.x.x wireguard peer <key> endpoint x.x.x.x:yyy keepalive-interval 10 preshared-key <key> allow-ips 0.0.0.0 0.0.0.0 ! up ! ip route 192.168.0.0 255.255.0.0 10.0.10.1 Wireguard0 Quote Link to comment Share on other sites More sharing options...
0 gaaronk Posted January 15, 2021 Author Share Posted January 15, 2021 12 minutes ago, werldmgn said: Интересно. Видимо сеть 192.168.0.0/16 у вас соответствует public интерфейсу, поэтому роутер и создает правило dnat заодно с snat. Т.к. судя по справочнику "Если interface или network соответствует интерфейсу c уровнем безопасности public, то будет выполняться трансляция адреса назначения (DNAT). Если to-address соответствует интерфейсу c уровнем безопасности public, то будет выполняться трансляция адреса источника (SNAT)." У вас, видимо, получается выполняются оба условия вот и создаются сразу два правила. Как выход, что если попробовать интерфейсу, за которым у вас сеть 192.168.0.0/16 (я так понимаю, это впн интерфейс), присвоить security-level private? Вот это "network соответствует интерфейсу c уровнем безопасности public" крайне расплывчато. Назначена на интерфейсе? Маршрутизируется в интерфейс? Непонятно но что что значит public. Да и потом. О какой сети/интерфейсе идет речь? Для команды ip static 192.168.0.0 255.255.0.0 PPPoE0 Мы говорим про 192.168.0.0 255.255.0.0 или про PPPoE0 ? Quote Link to comment Share on other sites More sharing options...
0 Werld Posted January 15, 2021 Share Posted January 15, 2021 (edited) 15 минут назад, gaaronk сказал: О какой сети/интерфейсе идет речь? Общий вид команды ip static ‹protocol› ( ‹interface› | ( ‹address› ‹mask›) ) ( ‹port› through ‹end-port› (‹to-address› | ‹to-host›) | [port] (‹to-address› | ‹to-host›) [to-port] | ‹to-address› | ‹to-host› | ‹to-interface›) Соответственно речь о 192.168.0.0/16, когда в описании упоминается interface или network. И речь о PPPoE, когда в описании сказано to-address | to-interface 15 минут назад, gaaronk сказал: Вот это "network соответствует интерфейсу c уровнем безопасности public" крайне расплывчато. Назначена на интерфейсе? Маршрутизируется в интерфейс? Ну не знаю. На мой взгляд, все же проблема именно в том, что роутер считает 192.168.0.0/16 соответствующей public. Поэтому и создаются два правила. Попробуйте в официальную поддержку обратиться, возможно они смогут подсказать решения для такой ситуации. Edited January 15, 2021 by werldmgn Quote Link to comment Share on other sites More sharing options...
0 Werld Posted January 15, 2021 Share Posted January 15, 2021 Тут пришло в голову. Раз у вас интерфейс wireguard, так сделайте ip static Wireguard0 PPPoE0 Quote Link to comment Share on other sites More sharing options...
0 r13 Posted January 15, 2021 Share Posted January 15, 2021 Возможно поэтому: 1 Quote Link to comment Share on other sites More sharing options...
0 Werld Posted January 15, 2021 Share Posted January 15, 2021 6 минут назад, r13 сказал: Возможно поэтому: Ничего себе какие дела. Очень плохо, что такие замечания к работе не записаны в cli manual'e. Полагаю, в данном конкретном случае, должна сработать как нужно только ip static Wireguard0 PPPoE0 Quote Link to comment Share on other sites More sharing options...
0 gaaronk Posted January 15, 2021 Author Share Posted January 15, 2021 Ну да, как тут правильно отписали ip static <in-iface> <out-iface> еще в source добавляет сеть прибитую к интерфейсу. Я проблему подпер костылем - делаю NAT по нужным условиям на другом конце туннеля. Там просто линукс. Использовать руки Opkg тоже невозможно =( Quote Link to comment Share on other sites More sharing options...
0 gaaronk Posted January 15, 2021 Author Share Posted January 15, 2021 (edited) 12 minutes ago, werldmgn said: Ничего себе какие дела. Очень плохо, что такие замечания к работе не записаны в cli manual'e. Полагаю, в данном конкретном случае, должна сработать как нужно только ip static Wireguard0 PPPoE0 Оно работает так Chain _NDM_STATIC_SNAT (1 references) num pkts bytes target prot opt in out source destination 4 0 0 SNAT all -- * ppp0 10.0.10.0/30 0.0.0.0/0 ndmmark match 0x4/0x4 to:x.x.x.x Что верно. Я не помню переделывали ли логику netfilter в кинтетиках, но в стандартом линуксе в этой цепочке нельзя делать match по входному интерфейсу. Поэтому тут надо явно задавать сети. А вот тот то оно добавляет сети в DNAT - в том и печаль. Edited January 15, 2021 by gaaronk Quote Link to comment Share on other sites More sharing options...
0 gaaronk Posted January 15, 2021 Author Share Posted January 15, 2021 16 minutes ago, r13 said: Возможно поэтому: Печально что тема 2017 года, а изменений нет =( Quote Link to comment Share on other sites More sharing options...
0 Werld Posted January 15, 2021 Share Posted January 15, 2021 3 минуты назад, gaaronk сказал: Печально что тема 2017 года, а изменений нет =( Согласен. Особенно учитывая, что под капотом то по сути нетфильтр, где все это элементарно выполняется. Ну, допустим, есть проблема с интерпретацией команды ip static, слишком она сложная и универсальная, ну так сделали бы две отдельные ip snat и ip dnat. Quote Link to comment Share on other sites More sharing options...
0 gaaronk Posted January 15, 2021 Author Share Posted January 15, 2021 1 minute ago, werldmgn said: Согласен. Особенно учитывая, что под капотом то по сути нетфильтр, где все это элементарно выполняется. Ну, допустим, есть проблема с интерпретацией команды ip static, слишком она сложная и универсальная, ну так сделали бы две отдельные ip snat и ip dnat. Надо Feature Request пилить Quote Link to comment Share on other sites More sharing options...
Question
gaaronk
Добрый день!
Что то никак не могу решить задачу через web-ui или cli.
Для сети 192.168.0.0/16 (доступной через туннель) при выходе в интернет и только туда, надо делать SNAT в адрес интерфейса.
Для пример - команда CLI
ip static 192.168.0.0 255.255.0.0 PPPoE0
прописывает не только SNAT, но и DNAT правило типа такого
Что совсем мешает жить и работать
Link to comment
Share on other sites
12 answers to this question
Recommended Posts
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.