Jump to content
  • 0
gaaronk

SNAT

Question

Добрый день!

 

Что то никак не могу решить задачу через 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

 

Что совсем мешает жить и работать

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Интересно. Видимо сеть 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?

Share this post


Link to post
Share on other sites
  • 0

Сеть 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

 

Share this post


Link to post
Share on other sites
  • 0
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 ?

Share this post


Link to post
Share on other sites
  • 0
15 минут назад, gaaronk сказал:

О какой сети/интерфейсе идет речь?

Общий вид команды ip static protocol( interface| ( address› ‹mask) ) ( portthrough 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 by werldmgn

Share this post


Link to post
Share on other sites
  • 0

Тут пришло в голову. Раз у вас интерфейс wireguard, так сделайте ip static Wireguard0 PPPoE0 

Share this post


Link to post
Share on other sites
  • 0

Возможно поэтому:

 

  • Thanks 1

Share this post


Link to post
Share on other sites
  • 0
6 минут назад, r13 сказал:

Возможно поэтому:

 

Ничего себе какие дела. Очень плохо, что такие замечания к работе не записаны в cli manual'e. Полагаю, в данном конкретном случае, должна сработать как нужно только ip static Wireguard0 PPPoE0 

Share this post


Link to post
Share on other sites
  • 0

Ну да,  как тут правильно отписали ip static <in-iface> <out-iface> еще в source добавляет сеть прибитую к интерфейсу.

Я проблему подпер костылем - делаю NAT по нужным условиям на другом конце туннеля. Там просто линукс.

Использовать руки Opkg тоже невозможно =(

Share this post


Link to post
Share on other sites
  • 0
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 by gaaronk

Share this post


Link to post
Share on other sites
  • 0
16 minutes ago, r13 said:

Возможно поэтому:

 

 

Печально что тема 2017 года, а изменений нет =(

Share this post


Link to post
Share on other sites
  • 0
3 минуты назад, gaaronk сказал:

 

Печально что тема 2017 года, а изменений нет =(

Согласен. Особенно учитывая, что под капотом то по сути нетфильтр, где все это элементарно выполняется. Ну, допустим, есть проблема с интерпретацией команды ip static, слишком она сложная и универсальная, ну так сделали бы две отдельные ip snat и ip dnat.

Share this post


Link to post
Share on other sites
  • 0
1 minute ago, werldmgn said:

Согласен. Особенно учитывая, что под капотом то по сути нетфильтр, где все это элементарно выполняется. Ну, допустим, есть проблема с интерпретацией команды ip static, слишком она сложная и универсальная, ну так сделали бы две отдельные ip snat и ip dnat.

Надо Feature Request пилить

Share this post


Link to post
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...