суббота, 11 декабря 2010 г.

wifi и настройка интерфейсов

Итак, есть usb wifi адаптер. Задача сделать из него точку доступа. Режим master его драйвера не поддерживают, поэтому поднимем его как Ad-hoc.
Будем считать, что драйвер загружен и имеем wifi интерфейс wlan0
Примерный вид скрипта для запуска:

#!/bin/sh
ifconfig wlan0 down
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 channel 5 <- канал свой свободный
#iwconfig wlan0 Bit 54Mb/s
iwconfig wlan0 essid 'virus testing' <- название вашей сети
iwconfig wlan0 key s:пароль <- ваш пароль
ifconfig wlan0 192.168.8.1 netmask 255.255.255.0 <- ip вашего интерфейса
iwconfig wlan0
ifconfig wlan0 up


Так же поднят dhcp демон слушающий этот интерфейс /etc/dhcpd.conf:
ddns-update-style ad-hoc;
subnet 192.168.8.0 netmask 255.255.255.0 {
interface wlan0;
option domain-name-servers 192.168.8.1;
option routers 192.168.8.1;
option ntp-servers 192.168.8.1;
option broadcast-address 192.168.8.0;
host ttt {
hardware ethernet 5C:4C:A9:4D:xx:xx; <- MAC адрес вашего беспроводного девайса
fixed-address 192.168.8.2;
}
}

запускаем демона в дебаг-режиме и смотрим кому и что мы выдаем: dhcpd -d

Как видим, нашему wifi девайсу с заданным MAC-адресом будет присвоен ip 192.168.8.2 и шлюз по умолчанию 192.168.8.1 и он же DNS

Теперь учитывая, что данный комп не является шлюзом и имеет связь со шлюзом через интерфейс eth0 с адресом из другой подсети, к примеру 192.168.7.50 надо использовать маскарадинг или (SNAT)

iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE

благодаря этому правилу у пакетов идущих на шлюз подменится "исходящий" адрес и пакеты после обработки вернуться этому компьютеру, а потом беспроводному устройству.

Ну и на шлюзе в конкретном случае надо тоже поднастроить:
политика форвард по умолчанию стоит в drop, поэтому пропустим с одного ip
iptables -A FORWARD -i eth0 -s 192.168.7.50 -p tcp -j ACCEPT
ну и дальше маскарад
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.7.50 -p tcp -j MASQUERADE

маршрут по умолчанию наш инет-интерфейс

В кратце это все. Ну еще надо поднять ДНС сервер слушающий 192.168.8.1, либо указать другой ("внешний"). Если назначать внешний ДНС, то в правилах шлюза надо еще добавить протокол udp
iptables -A FORWARD -i eth0 -s 192.168.7.50 -p udp -j ACCEPT
ну и дальше маскарад
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.7.50 -p udp -j MASQUERADE

что бы проверить, куда все и как бегает, можно использовать tcpdump
tcpdump -i wlan0 -n
будет показывать потоки через интерфейс wlan0 без трансляции ip и портов в "имена".
комбинируя с grep можно отслеживать, где затыки слушая разные интерфейсы и проследить куда и что пошло.

Комментариев нет:

Отправить комментарий