Имеем смартфон на MTK6573 с android 2.3.4, стационарный компьютер с Ubuntu 12.04 подключенный к проводному безлимитному интернету и желание расшарить этот интернет на смартфон.
Железо.
Из всего множества интерфейсов смартaфона для подключения к интернету подойдет только WiFi в режиме Infrastructure. Подойдет означает без получения прав root в смартфоне. Из компьютера надо сделать WiFi точку доступа к интернету, для чего потребуется WiFi адаптер с поддержкой AP mode для linux. Производители адаптеров ничего не упоминают о поддержке ими linux. Из всего найденного по этому поводу в интернете наиболее полным мне показался этот ресурс
http://wireless.kernel.org/. Я предпочел USB адаптер для возможности оперативного отключения.
Настройка программ.
Штатный network manager поддерживает создание WiFi сети, но только в режиме ad hoc. Такая сеть подойдет только для связи смартфона с компьютером, но не подойдет для подключения его к интернету. Специально отключать или удалять network manager, как рекомендуется в некоторых руководствах, мне не потребовалось, он сам становится неактивен обнаружив ручные настройки сети. Дополнительно необходимо установить любым известным способом всего одну программу - hostapd.
sudo apt-get install hostapd
Далее ее настройка путем редактирования /etc/hostapd/hostapd.conf
sudo gedit /etc/hostapd/hostapd.conf
Из личного опыта замечу, что начать лучше с конфигурации для открытой сети.
Вот его содержимое
interface=wlan0
driver=nl80211
ssid=Имя вашей WiFi сети
hw_mode=g
channel=11
macaddr_acl=0
Здесь надо заменить "Имя вашей WiFi сети" на удобное вам и уникальное среди вылавливаемых из вашей квартиры WiFi сетей. Просканировав каналы можно выбрать вместо 11-го наименее загруженный из 1, 6 или 11 каналов.
Приведу также конфигурацию для wep шифрования.
interface=wlan0
driver=nl80211
ssid=Имя вашей сети
hw_mode=g
channel=11
macaddr_acl=0
auth_algs=2
wep_default_key=0
wep_key0=Ваш пароль
Здесь добавилось к предыдущему примеру 3 строки, в которых надо заменить "Ваш пароль" на значение. Запоминать пароль не обязательно, его всегда можно будет увидеть в этом файле. Многие скажут, а где же самый надежный wpa. У меня сеть с wpa работать отказалась, потому и рекомендую начать с открытой сети.
Разрешаем автозапуск hostapd. Для этого редактируем файл /etc/default/hostapd
sudo gedit /etc/default/hostapd
В нем раскомментируем строки
RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Теперь необходимо создать шлюз в интернет для нашей сети wlan0. Руководств по этому поводу много, приведу свой пример.
Собственно для начала опишем вручную существующие на компьютере сети в файле /etc/network/interfaces
sudo gedit /etc/network/interfaces
Добавляем в него строки
iface eth0 inet static
address Ваш адрес у провайдера
netmask Маска подсети провайдера
gateway Шлюз провайдера
dns-nameservers ДНС провайдера
auto eth0
iface wlan0 inet static
address Адрес нашей WiFi сети.1
netmask 255.255.255.0
auto wlan0
Здесь строки до auto eth0 включительно описывают интерфейс подключения к провайдеру. Это частный случай подключения со статическим ip по ithernet для ubuntu 12.04. Для более ранних версий Ubuntu днс записывается в другом файле. Для других типов подключения есть руководства по ручному конфигурированию сетей. Последние 4 строки описывают WiFi сеть для связи со смартфоном. В поле "Адрес нашей WiFi сети" должно находиться значение из допустимого для локальных сетей диапазона и не пересекающееся с адресами провайдера, например 10.10.0 . Под адресом сети я обозначил 3 старших байта IP адреса. Младший байт будет всегда 1. Если приведенный для примера адрес не соответствует второму условию, необходимо выбрать другой.
Разрешаем передачу пакетов между сетями, редактируем /etc/sysctl.conf
sudo gedit /etc/sysctl.conf
В этом файле ищем и раскомментируем строку
net.ipv4.ip_forward=1
И наконец необходимо добавить правила для маршрутизации пакетов в /etc/rc.local
sudo gedit /etc/rc.local
Добавим перед строкой exit 0
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
На этом настройка компьютера закончена. Втыкаем в USB наш WiFi адаптер и перезагружаем комьютер.
Настройка смартфона.
Выбираем в меню "Настройка" - "Беспроводные сети". Включаем WiFi установив галочку и входим в пункт "Настройки Wi-Fi". В списке сетей должна появиться сеть с именем "Имя вашей WiFi сети". Жмем клавишу меню на корпусе, в появившемся меню выбираем "Дополнительные функции".
Ставим галочку напротив "Статический IP-адрес" и последовательно вводим:
"IP-адрес" - "Адрес нашей WiFi сети.2"
"Шлюз" - "Адрес нашей WiFi сети.1"
"Маска сети" - 255.255.255.0
"DNS1" - "ДНС провайдера"
"DNS2" - можно не заполнять или забить 8.8.8.8
Возвращаемся в меню "Настройки Wi-Fi", где выбираем нашу сеть и в поле пароль вводим "Ваш пароль". И наслаждаемся.
Особенности.
Для подключения смартфона к другим WiFi сетям понадобится снимать галочку "Статический IP-адрес". Для восстановления настроек достаточно ее вновь установить.
Соединение с WPA шифрованием установить не удалось.
Мощность передатчика полученной точки доступа не регулируется. А хоелось бы уменьшить.
Для отключения WiFi компьютер желательно загружать с адаптером, иначе долго ищет сеть, а потом его вынуть.