И снова здравствуйте. Недавно я задавал
вопрос по поводу настройки режима моста на 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 показывают, что через созданные цепочки пакеты идут, но по какой-то причине не доходят. Уже второй день бьюсь с этой проблемой, но ничего не получается. Что я делаю не так? Что может отбрасывать пакеты? Буду благодарен за любую помощь!