LINUX.ORG.RU

Как правильно днатить в nftables?

 ,


0

1

Есть сервер-пир wg сети (wg0), который должен перенаправлять некоторые запросы во внутреннюю сеть (на eth0). Нужно, чтобы при обращении к 10.70.71.4 сервер днатил его на 192.168.77.28 по всем портам. Такие варианты не принимает:

iifname wg0 ip daddr 192.168.77.28 dnat to 10.70.71.4

tcp dport 0-65535 ip daddr 192.168.77.28 dnat to 10.70.71.4
udp dport 0-65535 ip daddr 192.168.77.28 dnat to 10.70.71.4

ip saddr 10.70.71.0/24 ip daddr 192.168.77.28 dnat to 10.70.71.4
ip saddr 10.70.71.0/24 ip daddr 192.168.77.28 dnat to 10.70.71.4

Ошибка

Could not process rule: Operation not supported

Сервер на debian 11. Как написать, чтобы не отвергал? Не могу понять. Или мне вообще не dnat нужен? Сужу по аналогии с микротиковским натом, где у меня похожее правило, которое работает:

chain=dstnat action=dst-nat to-addresses=192.168.77.28 protocol=tcp dst-address=10.70.71.4
chain=dstnat action=dst-nat to-addresses=192.168.77.28 protocol=udp dst-address=10.70.71.4

Тебе нужен SNAT. Попробуй так:

/etc/nftables.conf

#! /sbin/nft -f

table ip nat {
   chain postrouting {
      type nat hook postrouting priority 100;
      ip saddr 10.70.71.4 oif eth0 snat to 192.168.77.28
   }
}

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

Я попробую, конечно, но все же спрошу. Разве задача SNAT не подмена айпи источника запроса? То есть если бы я отправлял пакет с 10.70.71.4 и хотел бы, чтобы получатель пакета думал, что он пришел со 192.168.77.28?

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

В общем, все работает, просто я случайно не в прероутинг сунул правила, а в пост.

  chain prerouting {
    type nat hook prerouting priority 0;
    ip daddr 192.168.77.28 dnat to 10.70.71.4
  }
Entmatix
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.