- Вопрос или проблема
- Ситуация
- Проблема
- Что я попробовал
- Ответ или решение
- Как настроить Raspbian Stretch в качестве беспроводного маршрутизатора с доступом в Интернет
- Введение
- Шаг 1: Подготовка оборудования и установка необходимых пакетов
- Шаг 2: Конфигурация сети
- Шаг 3: Настройка NAT с использованием iptables
- Шаг 4: Включение пересылки пакетов
- Шаг 5: Запуск служб
- Заключение
- Оптимизация и безопасность
Вопрос или проблема
Ситуация
Raspbian Stretch подключен к частной подсети 10.0.0.0/16 через wlan0 (модель RT5370) по беспроводной сети. Без дополнительных изменений Raspbian Stretch имеет доступ в Интернет, и DNS работает. P.S.: У меня нет физического доступа к маршрутизатору, который подключен к Интернету – только беспроводной.
Я добавил еще одну NIC 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
.
Таблица маршрутизации IP ядра
Назначение Шлюз Genbask Флаги Метрика Ссылка Использование Интерфейс
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
И получаю это:
Конфигурационный файл: /etc/hostapd/hostapd.conf
nl80211: Не удалось настроить режим драйвера
nl80211: deinit ifname=wlan1 disabled_11b_rates=0
nl80211: инициализация драйвера не удалась.
wlan1: состояние интерфейса UNINITIALIZED->DISABLED
wlan1: AP-DISABLED
hostapd_free_hapd_data: Интерфейс wlan1 не был запущен
Теперь, интересно, после того как я делаю:
root@computer:/# killall wpa_supplicant
root@computer:/# hostapd /etc/hostapd/hostapd.conf &
Я получаю это:
Конфигурационный файл: /etc/hostapd/hostapd.conf
Используя интерфейс wlan1 с hwaddress aa:bb:cc:11:22:33 и ssid "myssid"
wlan1: состояние интерфейса UNINITIALIZED->ENABLED
wlan1: AP-ENABLED
Это позволяет мне успешно подключить клиентские машины к myssid через wlan1, но теперь я не могу пинговать google.com или 8.8.8.8, и я заметил, что wlan0 не отображается в ifconfig, и моя таблица маршрутизации теперь выглядит так:
Таблица маршрутизации IP ядра
Назначение Шлюз Genbask Флаги Метрика Ссылка Использование Интерфейс
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, не имеют доступа в Интернет.
В этот момент моя таблица маршрутизации выглядит так:
Таблица маршрутизации IP ядра
Назначение Шлюз Genbask Флаги Метрика Ссылка Использование Интерфейс
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 получить доступ к Интернету, все это могло бы завершиться 🙂
Поскольку нет маршрута от маршрутизатора шлюза Интернета к сети, подключенной к 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 для wlan0. Поэтому статический маршрут не будет работать в этом случае.
В любом случае, это первый работающий маршрутизатор/брандмауэр, который я видел или слышал, который НЕ использует проводное соединение с WAN ИЛИ LAN.
Люди могут вполне использовать это на открытой бесплатной WiFi-сети вместо использования VPN или SOCKS-прокси (если вы достаточно знаете об iptables, чтобы защитить свое соединение).
Ответ или решение
Как настроить Raspbian Stretch в качестве беспроводного маршрутизатора с доступом в Интернет
Введение
Raspbian Stretch, свободно доступная операционная система для Raspberry Pi, является отличным выбором для создания беспроводного маршрутизатора. Этот процесс имеет свои особенности, особенно когда у вас есть доступ только к беспроводной сети. В данной инструкции мы рассмотрим, как настроить Raspbian Stretch в качестве маршрутизатора, позволяя подключенным клиентам получать доступ к Интернету через существующее беспроводное соединение.
Шаг 1: Подготовка оборудования и установка необходимых пакетов
Чтобы приступить к настройке, убедитесь, что у вас есть Raspberry Pi с установленной Raspbian Stretch, а также два беспроводных адаптера, которые будут использоваться в качестве wlan0
(для подключения к Интернету) и wlan1
(для создания точки доступа).
Установите необходимые пакеты:
sudo apt-get update
sudo apt-get install hostapd dnsmasq iptables-persistent
Шаг 2: Конфигурация сети
2.1 Настройка wlan1
как точки доступа
Создайте или отредактируйте файл /etc/hostapd/hostapd.conf
следующим образом:
interface=wlan1
driver=nl80211
ssid=myssid
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=mypassword
rsn_pairwise=CCMP
2.2 Настройка DHCP-сервера с помощью dnsmasq
Создайте резервную копию текущего конфигурационного файла dnsmasq
и отредактируйте его:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
sudo nano /etc/dnsmasq.conf
Добавьте следующие строки:
interface=wlan1
dhcp-range=192.168.0.2,192.168.0.14,255.255.255.240,24h
2.3 Конфигурация статического IP для wlan1
Отредактируйте файл /etc/dhcpcd.conf
:
sudo nano /etc/dhcpcd.conf
Добавьте следующую конфигурацию:
interface wlan1
static ip_address=192.168.0.1/28
Шаг 3: Настройка NAT с использованием iptables
Чтобы предоставить доступ в Интернет клиентам, подключающимся к wlan1
, нам нужно настроить NAT (преобразование сетевых адресов):
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Сохраните настройки iptables
, чтобы они применялись после перезагрузки:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
Шаг 4: Включение пересылки пакетов
Включите пересылку пакетов, отредактировав файл /etc/sysctl.conf
:
sudo nano /etc/sysctl.conf
Найдите строку:
#net.ipv4.ip_forward=1
Удалите #
, чтобы активировать эту функцию. Затем выполните:
sudo sysctl -p
Шаг 5: Запуск служб
Перезапустите службы hostapd
и dnsmasq
:
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl restart dnsmasq
Заключение
Теперь ваша Raspbian Stretch настроена как беспроводной маршрутизатор с доступом в Интернет. Клиенты смогут подключаться к вашей точке доступа и получать доступ к интернет-ресурсам. Если вы столкнетесь с проблемами в процессе настройки, проверьте настройки DHCP, NAT и маршрутизации. Настройка такого маршрутизатора может быть полезна при работе в условиях, когда доступ к физическому маршрутизатору отсутствует.
Оптимизация и безопасность
Помимо базовой настройки, рекомендуется рассмотреть дальнейшую оптимизацию и укрепление безопасности вашего маршрутизатора. Используйте сложные пароли для вашего Wi-Fi и учитывайте внедрение VPN-технологий для дополнительного уровня защиты при работе в открытых сетях.