Мне наконец удалось настроить точку доступа на моей WiFi-карте с помощью hostapd и dnsmasq. Я сделал это в следующем порядке:
1) Настройте hostapd и dnsmasq:
nano /etc/hostapd/hostapd.conf
nano /etc/dnsmasq.conf
Содержимое hostapd.conf:
интерфейс=wlan1mon драйвер=nl80211 ssid=o2wlan69 hw_mode=g канал=6 macaddr_acl=0 игнорировать_broadcast_ssid=0
Содержимое dnsmasq.conf:
интерфейс=wlan1mon dhcp-диапазон=192.168.1.2,192.168.1.30,255.255.255.0,12h dhcp-опция=3,192.168.1.1 dhcp-опция=6,192.168.1.1 сервер=8.8.8.8 журнал-запросы журнал-dhcp прослушивать-адрес=127.0.0.1
2) Вот две из четырех строк, назначение которых я точно не знаю:
ifconfig wlan1mon up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
3) Запустите службы:
dnsmasq -C /etc/dnsmasq.conf -d
hostapd /etc/hostapd/hostapd.conf
4) А вот строки 3 и 4, о которых я точно не знаю, что они делают:
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface wlan1mon -j ACCEPT
Я знаю, что iptables используется для изменения блокировки или перенаправления трафика, входящего и исходящего с устройства, и я знаю, что вы можете назначать сетевые маски и IP-адреса сетевым устройствам с помощью ifconfig. Я также знаю, как сетевая маска влияет на локальный диапазон IP-адресов, но мне не ясно, как эти команды помогают моей точке доступа совместно использовать интернет-соединение между моим интерфейсом wlan1mon и eth0. Кроме того, почему я должен запускать ifconfig и команду route?
решение1
ifconfig wlan1mon up 192.168.1.1 netmask 255.255.255.0
Эта команда сообщает вашему компьютеру о необходимости включить сетевое устройство wlan1mon (ваш интерфейс WiFi) и назначить ему IP-адрес 192.168.1.1 (с подсетью 192.168.1.0/24), чтобы он мог отправлять/получать сетевые пакеты.
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
Эта команда сообщает компьютеру, что каждый пакет, получатель которого находится в подсети 192.168.1.1/24, необходимо отправить через 192.168.1.1 (я не уверен, следует ли запускать эту команду на компьютере, который осуществляет пересылку, поскольку маршруты нужны только для подключающихся клиентов, насколько мне известно. А поскольку у вас уже настроен DHCP-сервер, этот маршрут должен быть автоматически добавлен на этих клиентах).
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
Эта команда дает команду компьютеру правильно «маскировать» IP входящих/исходящих пакетов (НсетьАадресТперевод) в цепочке POSTROUTING на eth0. По сути, он назначает IP-адрес компьютера каждому исходящему пакету (чтобы внешние компьютеры могли отправлять ответ) и переадресует входящие пакеты на соответствующий хост внутри вашей сети.
iptables --append FORWARD --in-interface wlan1mon -j ACCEPT
Эта команда позволяет входящим пакетам от wlan1mon пересылаться в первую очередь. Это означает, что пересылающему компьютеру разрешено обрабатывать и пересылать эти сетевые пакеты (даже), если получателем является кто-то другой.