Рейтинг:0

nftables пересылает с wlan0 на eth0, но ничего не происходит

флаг cn

У меня есть Raspberry Pi, подключенный к беспроводному маршрутизатору с wlan0, и есть сервер, подключенный к eth0. Оба эти подключения работают нормально.

eth0 между Pi и сервером статически настроен так, что eth0 Pi имеет IP-адрес 192.168.3.23/24, а сервер имеет IP-адрес 192.168.3.200/24. wlan0 Пи имеет IP-адрес 192.168.1.131/24.

Теперь я пытаюсь сделать переадресацию, чтобы при подключении к порту 88 Pi он переадресовывался на сервер за ним. У меня включена переадресация согласно sysctl-а | grep вперед:

net.ipv4.conf.all.bc_forwarding = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.bc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.eth0.bc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.lo.bc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.wlan0.bc_forwarding = 0
net.ipv4.conf.wlan0.forwarding = 1
net.ipv4.conf.wlan0.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

у меня тоже есть nftables настроен так:

IP-адрес таблицы {
        предварительная маршрутизация цепи {
                type nat hook prerouting priority dstnat; политика принять;
                TCP-порт {88, 443} днат на 192.168.3.200
        }

        посттрассировка цепи {
                введите nat hook приоритет постмаршрутизации srcnat; политика принять;
        }
}

Насколько я знаю, это должно перенаправить TCP-порты 88 и 443 на сервер по адресу 192.168.3.200, но ничего не происходит. Если я сделаю завиток http://192.168.1.131:88, запрос просто висит на неопределенный срок. Однако правило nftables что-то делает, потому что, если я очищаю набор правил, запросы немедленно отклоняются.

Я что-то упустил здесь?

Рейтинг:3
флаг cz

Your NAT rules fail to specify the interface where packets come in (for DNAT or go out (for SNAT) thus they are applying to all routed traffic in both directions, which is not what you want.

You at least need to specify the incoming interface for DNAT to work properly. For example:

                iif wlan0 tcp dport { 88, 443 } dnat to 192.168.3.200

You're missing the outbound masquerade rule entirely from your postrouting chain. For example:

                oif wlan0 masquerade
Рейтинг:1
флаг ar

При NAT назначения перезаписывается только место назначения. Источник остается нетронутым, поэтому любые пакеты, поступающие на сервер, будут иметь источник в 192.168.1.0/24.

Ваш сервер, вероятно, не имеет маршрута к 192.168.1.0/24; у него есть только маршрут до 192.168.3.0/24. Поэтому он разводит руками и выбрасывает пакет.

У вас есть два способа решить эту проблему:

  1. Установите устройство 192.168.3.23 в качестве шлюза по умолчанию на сервере и примените соответствующие настройки брандмауэра.
  2. Также используйте исходный NAT и перепишите как источник, так и место назначения пересылаемых пакетов.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.