Как настроить Raspbian Stretch в качестве беспроводного маршрутизатора с доступом в Интернет?

757
Rhyknowscerious

Ситуация

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, но теперь я не могу пропинговать 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 доступ в Интернет, все могло бы закончиться :)

0

1 ответ на вопрос

0
Rhyknowscerious

Поскольку нет маршрута от маршрутизатора интернет-шлюза до сети, подключенной к 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 - если я хотел избежать внесения изменений, когда истекает легкость wlan0 dhcp. Так что в этом случае статический маршрут не будет работать.

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

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

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