Jump to content
  • 5
Sign in to follow this  
gaaronk

NAT на выходном интерфейсе

Question

Хотелось бы получить возможность делать NAT не по входящему интерфейсу, а по исходящему.

Нормальный маскарадинг с udp preserve и прочими плюшками. Без костыля в виде static.

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0
8 часов назад, gaaronk сказал:

Хотелось бы получить возможность делать NAT не по входящему интерфейсу, а по исходящему.

Нормальный маскарадинг с udp preserve и прочими плюшками. Без костыля в виде static.

Есть же

> ip static SRC DST, где DST - исходящий интерфейс

udp preserve является платформоспецифичной реализацией NAT, потому на него не стоит полагаться в общем случае.

Share this post


Link to post
Share on other sites
  • 0
4 hours ago, Le ecureuil said:

Есть же

> ip static SRC DST, где DST - исходящий интерфейс

udp preserve является платформоспецифичной реализацией NAT, потому на него не стоит полагаться в общем случае.

А вот поясните пожалуйста что именно делает команда

ip nat udp-port-preserve ?

Как я вижу она вставляет в цепочку _NDM_NAT_UDP первым правилом RETURN

Вопрос в том что на цепочку _NDM_NAT_UDP и так никто не ссылается. Трафик в нее никогда не попадает

В версии 2.09.B.0.0-1 так точно

Ибо в POSTROUTING только

3        0     0 MASQUERADE  all  --  br0    *       0.0.0.0/0            0.0.0.0/0
4        0     0 MASQUERADE  all  --  br1    *       0.0.0.0/0            0.0.0.0/0

 

Ну и

Chain _NDM_NAT_UDP (0 references)

Share this post


Link to post
Share on other sites
  • 0
12 часа назад, gaaronk сказал:

А вот поясните пожалуйста что именно делает команда

ip nat udp-port-preserve ?

Как я вижу она вставляет в цепочку _NDM_NAT_UDP первым правилом RETURN

Вопрос в том что на цепочку _NDM_NAT_UDP и так никто не ссылается. Трафик в нее никогда не попадает

В версии 2.09.B.0.0-1 так точно

Ибо в POSTROUTING только

3        0     0 MASQUERADE  all  --  br0    *       0.0.0.0/0            0.0.0.0/0
4        0     0 MASQUERADE  all  --  br1    *       0.0.0.0/0            0.0.0.0/0

 

Ну и

Chain _NDM_NAT_UDP (0 references)

Попробуйте ее выключить и сразу увидите.

Share this post


Link to post
Share on other sites
  • 0

 

4 minutes ago, Le ecureuil said:

Попробуйте ее выключить и сразу увидите.

А она у меня и не включена.

 

Вот те куски iptables когда настроено так:

ip nat Home
ip nat Guest

 

Все, больше настроек нет

Chain POSTROUTING (policy ACCEPT 5 packets, 334 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       19  2854 _NDM_IPSEC_POSTROUTING_NAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0
2        5   334 _NDM_SNAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 MASQUERADE  all  --  br0    *       0.0.0.0/0            0.0.0.0/0
4        0     0 MASQUERADE  all  --  br1    *       0.0.0.0/0            0.0.0.0/0

Chain _NDM_NAT_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:35000:65535 masq ports: 1024-34999
2        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:1024:34999 masq ports: 35000-65535
3        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:0:411 masq ports: 412-1023
4        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:412:1023 masq ports: 0-411

 

Включаю

 

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 _NDM_IPSEC_POSTROUTING_NAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0
2        0     0 _NDM_SNAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 MASQUERADE  all  --  br0    *       0.0.0.0/0            0.0.0.0/0
4        0     0 MASQUERADE  all  --  br1    *       0.0.0.0/0            0.0.0.0/0

Chain _NDM_NAT_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
2        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:1024:34999 masq ports: 35000-65535
3        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:0:411 masq ports: 412-1023
4        0     0 MASQUERADE  udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp spts:412:1023 masq ports: 0-411

 

Выключаю и возвращаюсь к исходному.

Edited by gaaronk

Share this post


Link to post
Share on other sites
  • 0

Спасибо за репорт, действительно, в рамках разработки 2.09 "потерялась" часть логики.

Теперь все возвращено и работает.

  • Thanks 1

Share this post


Link to post
Share on other sites
  • 0

Кстати, если использовать в CLI что то вроде 

 ip static Guest PPPoE0

То в web интерфейсе ранее введенные трансляции портов не отображаются.

Share this post


Link to post
Share on other sites
  • 0
1 час назад, gaaronk сказал:

Кстати, если использовать в CLI что то вроде 

 ip static Guest PPPoE0

То в web интерфейсе ранее введенные трансляции портов не отображаются.

Да, такое поведение было заявлено при анонсе этой новой конструкции.

Edited by r13

Share this post


Link to post
Share on other sites
  • 0
On 6/16/2017 at 9:56 PM, Le ecureuil said:

Есть же

> ip static SRC DST, где DST - исходящий интерфейс

udp preserve является платформоспецифичной реализацией NAT, потому на него не стоит полагаться в общем случае.

Тогда вопрос. Можно ли при задании  ip static SRC DST, где DST - исходящий интерфейс сделать опцию чтобы  рандомизировать транслируемые порты для UDP, как это делается для NAT на входном интерфейсе ?

По сути проблемы.

Роутер с публичным ип A держит ipsec туннель с хостом B.

Клиент за роутером, полнимает от себя туннель к хосту B (иногда так надо, потому что в туннеле который держит роутер бегают определенные сетки, а иногда надо поднять на клиенте впн, что бы заворачивалось все).

Роутер транслирует исходящий адрес и порт клиента (для IKE) в A:500

Статический туннель A-B через некоторое время умирает, потому что IKE сообщения от B к роутеру попадают вовсе не к роутеру, а к клиенту поднявшему отдельный туннель.

 

  • Thanks 1

Share this post


Link to post
Share on other sites
  • 0

По завету Le ecureuil буду активнее в соотвесвующей теме. Даешь нормальный NAT на выход!

 

 

  • Thanks 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...