@IvanGeso
Релейщик

Как правильно настроить iptables?

И снова здравствуйте. Недавно я задавал вопрос по поводу настройки режима моста на Raspberry Pi. Точного ответа я не получил, однако fara_ib навел меня на принципиально отличающийся вариант решения возникшей проблемы.
Суть проблемы
Имеем:
1. Raspberry Pi Zero W с Raspbian Buster Lite последней версии;
2. LTE USB-модем Huawei E3372h с расширенным веб-интерфейсом;
3. Сим-карту с белым ip-адресом (именно с белым, из Интернета пингуется спокойно)
4. Веб-приложение, написанное на Flask. В качестве сервера используется связка NginX+Gunicorn. Все это хозяйство развернуто на Raspberry Pi.

Требуется:
Настроить малину таким образом, чтобы она раздавала Wi-Fi, при этом при подключении к нему был доступ к веб-приложению. Доступ к веб-приложению также нужен из сети по ip-адресу сим-карты.


Итак, в соответствии с полученным советом, я отключил DHCP сервер на модеме Huawei, оставил на нем статический ip-адрес 192.168.8.1 и провел настройку в соответствии с официальным мануалом (вариант с NAT):

  • /etc/dhcpcd.conf выглядит так (напомню, что модем Huawei системой определяется как интерфейс eth0):
    interface wlan0
        static ip_address=192.168.8.3/24
        nohook wpa_supplicant
    interface eth0
        static ip_address=192.168.8.2
        static_routers=192.168.8.1
        static domain_name_servers=192.168.8.1

  • /etc/dnsmasq.conf выглядит так:
    interface=wlan0
    dhcp-range=192.168.8.4,192.168.8.20,255.255.255.0,24h

  • /etc/hostapd/hostapd.conf На нем не буду подробно останавливаться т.к. настройка идентична той, что приведена в мануале (за исключением SSID и пароля).

  • iptables Вот тут самое интересное. Для начала я пытался повторить то, что предлагается сделать в официальном мануале, а как только добьюсь хотя бы этого, пробовать все остальное. Поэтому я включил net.ipv4.ip_forward=1 в /etc/sysctl.conf и сделал настройку:
    sudo iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE
    Правда способ автозагрузки настроек iptables выбрал не тот, что предлагается в мануале: В /etc/network/if-up.d/ создал скрипт iptables-rules, куда поместил текущие настройки iptables следующим образом:
    iptables-save >> /etc/network/if-up.d/iptables-rules
    В начало скрипта поместил #!/sbin/iptables-restore и сделал его исполняемым. Таким образом при старте системы настройки iptables берутся из данного файла. Вывод команды iptables-save выдает то, что нужно.


По итогу при подключении к точке доступа компьютер получает ip-адрес из заданного в dhcp-range диапазона, но при этом не пингуется даже интерфейс wlan0 (192.168.8.3), я уж не говорю об ip-адресе модема Huawei. При этом счетчики iptables показывают, что через созданные цепочки пакеты идут, но по какой-то причине не доходят. Уже второй день бьюсь с этой проблемой, но ничего не получается. Что я делаю не так? Что может отбрасывать пакеты? Буду благодарен за любую помощь!
  • Вопрос задан
  • 888 просмотров
Решения вопроса 1
fara_ib
@fara_ib
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
ну и сохранить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы