Представьте, что вы поехали в другую страну, у вас собой есть смартфон и вам очень нужно зайти с него в интернет (например синхронизировать контакты или поставить какой-то софт). Какие есть варианты?
— Первый вариант — это мобильный интернет. К сожалению, это не всегда просто и не всегда дёшево.
— Второй вариант — WIFI. Вам повезло, если вы можете подключиться к WIFI там, куда вы прибыли, и в этом случае задача уже решена.
— Третий вариант — LAN. А что если у нас есть только LAN? Самое простое — это захватить с собой из дома небольшую точку доступа, но что если вы её не взяли с собой или у вас её нет? В этос случае вам поможет случайно захваченный с собой ноутбук или нетбук :)
— EeePC 901 с Ubuntu 10.10
— Смартфон
— Локальная сеть
— Получить доступ в сеть со смартфона используя WIFI
Данное решение выработано исходя из того, что иметь постоянно настроенный и включенный WIFI на нетбуке в режиме точки доступа не является целесообразным, поэтому реализовано оно в виде скрипта, который включает этот режим временно.
Для решения задачи нам потребуются:
— hostapd — обеспечивает работу сетевой карты в режиме точки доступа
— dnsmasq — выступает в качестве DHCP и DNS сервера
— скрипты install.sh и start.sh для автоматизации процесса
Первый скрипт поможет установить необходимые пакеты.
install.sh
А это минимальный конфиг для hostapd.
/etc/hostapd.conf
Минимальный конфиг для dnsmasq.
/etc/dnsmasq.conf
И второй скрипт, который переводит сетевую карту в режим точки доступа и обратно.
start.sh
К вы наверное уже догадались, использовать данное решение очень просто. Итак, подготовка.
1. Запускаем install.sh.
2. Создаём файл конфигурации с нашими параметрами /etc/hostapd.conf.
3. Подменяем установленный файл конфигурации /etc/dnsmasq.conf нашим, который описан выше.
А теперь использование! Для того, чтобы перевести сетевую карту в режим точки доступа необходимо:
1. Отключить «Беспроводную сеть» (Wireless network) щёлкнув правой кнопкой мыши на аплете Network Manager-а в системном трее.
2. Запустить скрип start.sh. Останов работы скрипта сопровождается отключением сервера точки доступа, а так же DHCP/DNS сервера.
Результат: у вас появится точка доступа с авторизацией по WPA2 именем laptop-wifi и паролем wifipass.
Решение было протестировано на Ubuntu 10.10, но может быть легко адаптировано под другой релиз Ubuntu или другой дистрибутив. В связи с ближайшей поездкой за границу производилась попытка найти готовое ПО реализующее данный функционал, но она не увенчалась успехом. В связи с этим и родилось вышеописанное решение.
Приятных экспериментов!
Donations are welcome.
UPDATE:
— Обновлённый скрипт на GitHub https://github.com/giner/helplinux/tree/master/scripts/wifi-host-ap
— Первый вариант — это мобильный интернет. К сожалению, это не всегда просто и не всегда дёшево.
— Второй вариант — WIFI. Вам повезло, если вы можете подключиться к WIFI там, куда вы прибыли, и в этом случае задача уже решена.
— Третий вариант — LAN. А что если у нас есть только LAN? Самое простое — это захватить с собой из дома небольшую точку доступа, но что если вы её не взяли с собой или у вас её нет? В этос случае вам поможет случайно захваченный с собой ноутбук или нетбук :)
Имеем
— EeePC 901 с Ubuntu 10.10
— Смартфон
— Локальная сеть
Задача
— Получить доступ в сеть со смартфона используя WIFI
Решение
Данное решение выработано исходя из того, что иметь постоянно настроенный и включенный WIFI на нетбуке в режиме точки доступа не является целесообразным, поэтому реализовано оно в виде скрипта, который включает этот режим временно.
Для решения задачи нам потребуются:
— hostapd — обеспечивает работу сетевой карты в режиме точки доступа
— dnsmasq — выступает в качестве DHCP и DNS сервера
— скрипты install.sh и start.sh для автоматизации процесса
Первый скрипт поможет установить необходимые пакеты.
install.sh
#!/bin/bash
# Install wifi hotspot daemon and dns/dhcp server
sudo apt-get install hostapd dnsmasq
# Stop installed services
sudo service hostapd stop
sudo service dnsmasq stop
# Disable autostart on boot
sudo update-rc.d hostapd disable
sudo update-rc.d dnsmasq disable
А это минимальный конфиг для hostapd.
/etc/hostapd.conf
# Define interface
interface=wlan0
# Select driver
driver=nl80211
# Set access point name
ssid=laptop-wifi
# Set access point harware mode to 802.11g
hw_mode=g
# Set WIFI channel (can be easily changed)
channel=6
# Enable WPA2 only (1 for WPA, 2 for WPA2, 3 for WPA + WPA2)
wpa=2
wpa_passphrase=wifipass
Минимальный конфиг для dnsmasq.
/etc/dnsmasq.conf
# Bind to only one interface
bind-interfaces
# Choose interface for binding
interface=wlan0
# Specify range of IP addresses for DHCP leasses
dhcp-range=192.168.150.2,192.168.150.10
И второй скрипт, который переводит сетевую карту в режим точки доступа и обратно.
start.sh
#!/bin/bash
# Start
# Configure IP address for WLAN
sudo ifconfig wlan0 192.168.150.1
# Start DHCP/DNS server
sudo service dnsmasq restart
# Enable routing
sudo sysctl net.ipv4.ip_forward=1
# Enable NAT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Run access point daemon
sudo hostapd /etc/hostapd.conf
# Stop
# Disable NAT
sudo iptables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
# Disable routing
sudo sysctl net.ipv4.ip_forward=0
# Disable DHCP/DNS server
sudo service dnsmasq stop
Использование
К вы наверное уже догадались, использовать данное решение очень просто. Итак, подготовка.
1. Запускаем install.sh.
2. Создаём файл конфигурации с нашими параметрами /etc/hostapd.conf.
3. Подменяем установленный файл конфигурации /etc/dnsmasq.conf нашим, который описан выше.
А теперь использование! Для того, чтобы перевести сетевую карту в режим точки доступа необходимо:
1. Отключить «Беспроводную сеть» (Wireless network) щёлкнув правой кнопкой мыши на аплете Network Manager-а в системном трее.
2. Запустить скрип start.sh. Останов работы скрипта сопровождается отключением сервера точки доступа, а так же DHCP/DNS сервера.
Результат: у вас появится точка доступа с авторизацией по WPA2 именем laptop-wifi и паролем wifipass.
Решение было протестировано на Ubuntu 10.10, но может быть легко адаптировано под другой релиз Ubuntu или другой дистрибутив. В связи с ближайшей поездкой за границу производилась попытка найти готовое ПО реализующее данный функционал, но она не увенчалась успехом. В связи с этим и родилось вышеописанное решение.
Приятных экспериментов!
Donations are welcome.
UPDATE:
— Обновлённый скрипт на GitHub https://github.com/giner/helplinux/tree/master/scripts/wifi-host-ap