Оглавление

О чём это

Если вам нужна постоянная точка доступа, то ищите документацию по вашему дистрибутиву. Как настроить NAT, DHCP, iptables… Это же руководство про то, как настроить элементарное соединение в две команды, чтобы просто перелить файл с компа на телефон или для чего-нибудь подобного. Ну и про NAT я тоже чуть-чуть скажу.

Соединение по WiFi

Нам не понадобится ничего, кроме hostapd и какого-нибудь простого web-сервера.

Настраиваем WiFi

Создаём файл hostapd.conf примерно такого содержания

interface=wlan0
#bridge=br0
driver=nl80211
logger_stdout=-1
logger_stdout_level=2

# Имя Вашей точки доступа
ssid=mi
hw_mode=g
channel=6
auth_algs=3
max_num_sta=5
wpa=2

# Пароль
wpa_passphrase=xxxxxxxx
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

# Если надо скрыть ssid
#ignore_broadcast_ssid=1

Запускаем демон.

sudo hostapd -d ./hostapd.conf

На подключающемся устройстве настраиваем, скажем, 192.168.1.2, а на компьютере:

sudo ip addr add 192.168.1.1/24 dev wlan0

Всё.

Настраиваем web-сервер

Тут по-вкусу. Для nginx конфигурация может быть такой:

server {
  server_name x;
  access_log /var/log/nginx/x.access.log;
  error_log /var/log/nginx/x.error.log error;
  charset utf-8;
  index index.html;
  autoindex on;
  listen 8888;
  location / {
    alias /tmp/;
  }
}

Всё. Теперь по адресу http://192.168.1.1:8888/ видна ваша /tmp/.

Если вы хотите получить полноценную точку доступа

Если вам не лень, то настроить NAT и DHCP совсем не сложно. Здесь я расскажу, как всё это запустить на коленке. Как включить запуск демонов на этапе загрузки — читайте в документации к вашему дистрибутиву.

Настройка DHCP

Создаём минимальную конфигурацию в /etc/dhcpd.conf:

option domain-name-servers 8.8.8.8, 8.8.4.4;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.150 192.168.1.250;
}

Запускаем демон с отладкой:

dhcpd -f -d

Теперь вы можете проверить, что всё работает. Запускаем tcpdump:

tcpdump -i wlp4s0

Подключаемся любым устройством к нашей точке. Пока интернет на устройстве не появится, но tcpdump должен показать что-то вроде:

21:12:11.199623 IP 192.168.1.150.55610 > google-public-dns-b.google.com.domain: 27302+ A? go.trouter.io. (31)

То есть, нашему клиенту выдался адрес и всё работает.

Настройка NAT

Проверяем и включаем, если надо, форвардинг:

sysctl -a | grep forward
sysctl net.ipv4.ip_forward=1

Настраиваем NAT:

iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlp4s0 -o enp2s -j ACCEPT

А почему не мост?

Мост настраивается проще, но опыт показывает, что мост работает устойчиво не со всеми устройствами. Если для вас не принципиально, то выбирайте NAT.

Кстати, иногда даже в LTS-ядрах WiFi драйвера оказываются поломанными. Я дважды с этим сталкивался. Я на этот случай держу два ядра: LTS и не-LTS. Сразу оба не ломались ещё ни разу.

Одним словом, будьте готовы к тому, что поддержка вашего чипа может работать не всегда, может ломаться или чиниться при обновлении системы. Сохраняйте пути для отката на предыдущую версию или держите несколько ядер.