poloniumv's

Ноутбук с CentOS как точка доступа

26 мая 2014 г. 11:31

После приобретения смартфона возникла идея использовать Wi-Fi карту рабочего ноутбука (Qualcomm Atheros AR242x / AR542x Wireless Network Adapter) как точку доступа. Дело нехитрое.

Ставим dhcpd:

yum install dhcp

Правим конфиг /etc/dhcp/dhcpd.conf. У меня он выглядит так:

default-lease-time 3600;
max-lease-time 9000;
authoritative;
log-facility local7;
subnet 192.168.11.0 netmask 255.255.255.0 {
    interface wlan0;
    range 192.168.11.2 192.168.11.255;
    option domain-name-servers 95.169.2.106;
    option routers 192.168.11.1;
    option broadcast-address 192.168.11.0;
} 

Поднимаем интерфейс wlan0 и вешаем на него IP-адрес в соответствии с указанным в /etc/dhcp/dhcpd.conf:

ifconfig wlan0 down
ifconfig wlan0 192.168.11.1/24 up
ifconfig wlan0 up 

Включаем форвардинг и NAT:

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables --flush
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Запускаем dhcpd:

/etc/init.d/dhcpd start 

Ставим программную точку доступа hostapd. Тут есть два варината: первый - ставить из репозиториев, второй - собирать с исходников. Я выбрал второй вариант, т. к., почему-то, в репозиториях была сборка без поддержки драйвера nl80211.

cd /usr/src
wget http://w1.fi/releases/hostapd-2.1.tar.gz
tar -xvf hostapd-2.1.tar.gz
cd hostapd-2.1/hostapd
cp defconfig .config 

Убеждаемся, что строка CONFIG_DRIVER_NL80211=y присутствует в файле .config и собираем hostapd:

make install clean

Создаем конфиг /etc/hostapd/hostapd.conf:

interface=wlan0
driver=nl80211
ssid=имя_сети
country_code=RU
hw_mode=g
channel=11 # Канал на ваше усмотрение. У меня это 11-ый.
macaddr_acl=0
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_passphrase=ключ
wpa_pairwise=TKIP CCMP 

Ну а чтобы все автоматом стартовало, добавляем нижеследующее в /etc/rc.local (привычка еще с FreeBSD):

/sbin/iptables --flush
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig wlan0 192.168.11.1/24 up
ifconfig wlan0 up
/etc/init.d/dhcpd start
hostapd /etc/hostapd/hostapd.conf &