Ситуация

Ситуация

Ситуация

Raspbian Stretch подключен по беспроводной сети к частной подсети 10.0.0.0/16 через wlan0 (модель RT5370). Без дополнительных изменений Raspbian Stretch имеет доступ в Интернет и DNS работает. PS: У меня нет физического доступа к маршрутизатору, который подключается к Интернету — только беспроводной доступ.

Я добавил еще одну сетевую карту RT5370 как wlan1 и настроил ее как беспроводную точку доступа с помощью hostapd.

Поскольку я не знаю диапазон адресов DHCP-сервера маршрутизатора, я не хочу добавлять статический адрес к wlan0.

Я настроил статический адрес IPv4 на wlan1 192.168.0.1/28 (16 адресов хостов) и настроил dnsmasq в качестве DHCP-сервера для этой сети.

Проблема

На самом деле все должно быть довольно просто.

Raspbian Stretch может либо 1) получать доступ к Интернету, либо 2) выступать в качестве WAP для подключения клиентов. Проблема в том, что обе функции не будут работать одновременно.

Я видел руководства, в которых подключение к Интернету осуществлялось через медь, а не радиоволны, но я не вижу, какая разница, если интерфейс подключения к Интернету беспроводной, а не проводной. В любом случае...

Что я пробовал

После перезагрузки я успешно пингую google.com и 8.8.8.8.

После проверки я вижу и wlan0, и wlan1, ifconfigи, похоже, они настроены нормально.

Вот вывод route.

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
default     10.0.0.36   0.0.0.0         UG    303    0     0 wlan0
default     192.168.0.1 0.0.0.0         UG    304    0     0 wlan1
10.0.0.0    0.0.0.0     255.255.0.0     U     303    0     0 wlan0
192.168.0.0 0.0.0.0     255.255.255.240 U     303    0     0 wlan1

Я не знаю, почему здесь так, будто используются два шлюза по умолчанию, когда один маршрут по умолчанию кажется более подходящим, но Интернет работает, поэтому я продолжаю...

Убедившись, что Raspbian Stretch имеет доступ к Интернету, я пробую:

root@computer:/# hostapd /etc/hostapd/hostapd.conf

И получите это:

Configuration file: /etc/hostapd/hostapd.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211: driver initialization failed.
wlan1: interface state UNINITIALIZED->DISABLED
wlan1: AP-DISABLED
hostapd_free_hapd_data: Interface wlan1 wasn't started

И вот что интересно, после того, как я это сделаю:

root@computer:/# killall wpa_supplicant
root@computer:/# hostapd /etc/hostapd/hostapd.conf &

Я понимаю это:

Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan1 with hwaddress aa:bb:cc:11:22:33 and ssid "myssid"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED

Это позволяет мне успешно подключать клиентские машины к myssid через wlan1, но теперь я не могу выполнить ping на google.com или 8.8.8.8, и я заметил, что wlan0 не отображается в ifconfig, а моя таблица маршрутизации теперь выглядит так:

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0     255.255.255.240 U     303    0     0 wlan1

Чтобы восстановить wlan0, я делаю следующее:

root@computer:/# service dhcpcd restart
root@computer:/# sysctl daemon-reload

Теперь wlan0 и wlan1 отображаются в ifconfig, Raspbian Stretch может пинговать google.com и 8.8.8.8, но клиенты, подключенные к wlan1, не имеют доступа к Интернету.

На данный момент моя таблица маршрутизации выглядит так:

Kernel IP routing table
Destination Gateway     Genbask         Flags Metric Ref Use Iface
default     10.0.0.36   0.0.0.0         UG    303    0     0 wlan0
10.0.0.0    0.0.0.0     255.255.0.0     U     303    0     0 wlan0
192.168.0.0 0.0.0.0     255.255.255.240 U     304    0     0 wlan1

Если бы я только мог разрешить клиентам wlan1 доступ в Интернет, все это могло бы закончиться :)

решение1

Поскольку маршрута от маршрутизатора интернет-шлюза до сети, подключенной к wlan1 (192.168.0.0/28), нет, я в итоге просто настроил динамическое NAT с перегрузкой PAT между wlan0 и wlan1.

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Миссия выполнена!

Если бы у меня был доступ к маршрутизатору шлюза Интернета, я, вероятно, мог бы добавить статический маршрут с адреса wlan0 Raspbian Stretch на сеть 192.168.0.0/28, но 1) у меня нет доступа к этому маршрутизатору и 2) мне также пришлось бы настроить либо a) резервирование DHCP на сервере DHCP (к которому у меня также нет доступа), либо b) статический IP-адрес на wlan0 Raspbian Stretch, если бы я хотел избежать внесения изменений, когда истекает срок действия dhcp ease wlan0. Поэтому статический маршрут в этом случае не сработает.

В любом случае, это первый работающий маршрутизатор/брандмауэр, который я видел или о котором слышал, и который делает это.НЕТиспользовать проводное подключение к WANИЛИЛокальная сеть.

Люди могли бы с легкостью использовать это в открытой бесплатной сети WiFi вместо использования VPN или прокси SOCKS (если вы достаточно знакомы с iptables, чтобы защитить свое соединение).

Связанный контент