Делаем Wi-Fi точку доступа
Всем привет!
Многие сейчас имеют дома ноутбуки и современные сенсорные мобильные телефоны. И в тех, и в других уже давно присутствуют Wi-Fi приемники для упрощения выхода в интернет. Правда, для осуществления этого выхода еще нужен и Wi-Fi роутер, но они тоже уже перестали быть экзотикой. Даже наоборот, экзотикой стало отсутствие роутера. А выйти в интернет с мобильного, при этом, хочется. Если еще учесть, что цены на мобильный интернет кусаются, да и скорость мягко говоря не очень, выходом становится создание своей wi-fi точки доступа.
Вот как раз об одном из экзотических случаев и напишу, основываясь на собственном примере. У меня обычный стационарный компьютер (даже не ноутбук с wi-fi модулем) который выходит в интернет через витую пару, смартфон, которому хочется в интернет и, конечно, Linux на борту компьютера.
Итак, делать мы будем программную Wi-Fi точку доступа из компьютера. Для этого я купил самый дешевый в моем городе usb wi-fi брелок D-Link DWA-125 (не сочтите за рекламу, но я очень доволен покупкой, работает как часы). До сих пор помню глаза продавца-консультанта в магазине, у которого я спросил: "Может ли этот брелок работать в режиме точки доступа?" Поэтому выходит что покупал я кота в мешке (вернее, почти, перед покупкой я всеже поискал в интернете информацию по этому вопросу и всезнающий интернет хоть и неуверенно, но подтвердил что я сделал правильный выбор).
Итак, есть брелок, вставили его в usb-порт. Открываем терминал и следующей командой проверяем, определился ли брелок системой:
В выводе должно быть что-то похожее на:
Если есть подобная строка (или такая же при использовании DWA-125) продолжаем:
eth0 no wireless extensions.
lo no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
Где "Access Point: Not-Associated" означает что ваш брелок не работает сейчас в режиме точки доступа. Далее нужно проверить может ли он раздавать wi-fi или работает только как приемник. Для этого вводим в терминале такую команду:
И ищем в выводе такие строки:
...
* AP
* AP/VLAN
...
Если нашли, поздравляю, ваш брелок подходит для наших целей, осталось только настроить точку доступа.
Для этого необходимо установить пару программ:
Hostapd нам нужен собственно для поднятия точки доступа, а dnsmasq для того чтобы при подключении мобильного телефона к нашей будущей wi-fi сети телефону автоматически выдавался IP-адрес.
Для настройки hostapd идем в /etc/hostapd, открываем терминал в этой папке и создаем файл hostapd.conf:
С таким содержимым:
wpa_passphrase=<пароль для вашей точки доступа>
interface=wlan0
auth_algs=3
channel=1
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
Для минимальной настройки hostapd этого будет достаточно. Естественно <имя вашей точки доступа> и <пароль для вашей точки доступа> необходимо заменить на свои (кавычки <> убрать). Немного поясню: при таких значениях в этом файле ваша точка доступа будет работать на wi-fi-канале "g", с шифрованием AES и защитой WPA2-PSK. Как и большинство "железных" роутеров на сегодняшний день. Кстати, имя интерфейса у вас может быть не wlan0. Уточнить имя можно из команды iwconfig, приведенной выше.
Перейдем к настройке dnsmasq. В папке /etc есть файл dnsmasq.conf. Там очень много всяческих настроек с подробными комментариями, но на английском, поэтому для того чтобы все работало ищем вот такие строки в нем и меняем в соответствии с этим отрывком:
user=<имя пользователя>
...
interface=wlan0
...
dhcp-range=192.168.0.2,192.168.0.255,255.255.255.0,24h
...
Здесь мы задаем свое имя пользователя, опять же имя интерфейса и диапазон IP-адресов, которые будут получать подключающиеся устройства. В данном примере от 2 до 255. Ip-адрес 192.168.0.1 я оставил для самого компьютера, который будет раздавать интернет.
Далее необходимо создать файл dnsmasq.service в папке /etc/systemd/system:
С таким содержимым:
[Service]
ExecStartPre=/usr/bin/ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 up
Содержимое этого файла как раз и отвечает за присвоение компьютеру "оставленного" IP-адреса при загрузке системы и будет включаться в файл /usr/lib/systemd/system/dnsmasq.service при запуске сервиса dnsmasq.
Перейдем к настройке iptables. Iptables - это очень мощный, гибко настраиваемый firewall в linux, но довольно сложный в освоении. Особо вдаваться в подробности не буду (так как и сам еще не до конца в нем разобрался), поэтому просто открываем терминал и вводим по очереди следующие команды:
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables-save > /etc/iptables/iptables.rules
Все же немного поясню: все строки, кроме предпоследних двух сбрасывают все настройки firewall к начальным, предпоследняя строка разрешает нам пользоваться интернетом, подведенным к основному компьютеру (шлюзу) на устройствах, объединенных с ним в локальную сеть, а последняя строка сохраняет введенные нами настройки firewall. Важная деталь: eth0 в предпоследней строке - это имя интерфейса компьютера на который приходит интернет (у вас может отличаться).
Осталось совсем немного)
Теперь нужно настроить проброс пакетов. делается это командой:
Но есть один недостаток, эту команду нужно будет вводить после каждой загрузки компьютера. Чтобы так не заморачиваться идем в папку /etc/sysctl.d и в файле 99-sysctl.conf приводим строку "net.ipv4.ip_forward =" к такому виду:
То есть пишем 1 после знака равно. Тем самым разрешая проброс пакетов. Кстати, если такого файла не оказалось, просто создайте его и поместите внутрь вышеописанную строку.
На этом с настройками закончили. На первый взгляд все кажется очень сложным, но... глаза боятся, а руки делают. После самостоятельной настройки все эти "магические надписи" станут логичными и понятными. Теперь осталось только запустить необходимые сервисы и добавить их в автозагрузку:
sudo systemctl start dnsmasq
sudo systemctl start iptables
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
sudo systemctl enable iptables
После запуска проверьте на всякий случай работают ли сервисы:
systemctl status dnsmasq
systemctl status iptables
Если все хорошо, вы увидите зеленую надпись "Active", если плохо - красную "Inactive", тогда проверьте все введенные настройки, возможно где-то в чем-то ошиблись.
Теперь у вас есть собственная wi-fi точка доступа. Плюс ее в том что ваш телефон, планшет, ноутбук и т.д. теперь имеет полноценный высокоскоростной доступ в интернет, причем бесплатно (имею в виду что не за дополнительную плату. За подключение к интернету компьютера с нашей точкой доступа все же нужно платить). К тому же, через wi-fi подключение теперь можно передавать файлы с компьютера на телефон или планшет и обратно без проводов. Для этого правда нужно установить на устройство с Android (не реклама, просто сам пользуюсь. На остальных мобильных операционных системах должны быть подобные программы) программу FTP-server (опять же, не реклама), ввести несколько простых настроек (все на русском языке, просто и понятно) и готово!
Но у такой точки доступа есть и один минус: wi-fi раздается только при включенном компьютере, что вполне логично. Лично мне, например, интернета на мобильном хватает когда я нахожусь рядом с компьютером. В остальное время просто не пользуюсь им с телефона. Поэтому особо и не минус. Как для вас такое ограничение - попробуйте и сделаете выводы.
Вот такая обширная статья получилась.
Изучайте, настраивайте, комментируйте. Если найдете где-то ошибку - пишите, вместе исправим.