Как стать автором
Обновить

Как соединить PC и смартфон по WiFi Ad-Hoc

Время на прочтение5 мин
Количество просмотров3.2K
Иногда нужно подключить телефон к интернету, но не через GPRS, а, например, через домашнего провайдера. Можно установить на смартфон GNUBox и попытаться брать интернет с домашнего компа через Bluetooth. Правда, говорят, после GNUBox'а на смартфорне начинают глючить обычные соединения. Можно поставить роутер с WiFi — и подключаться смартфоном к нему.

Если же нет желания разбираться с GNUBox'ом или покупать WiFi-роутер, можно настроить на домашнем компьютере WiFi Ad-Hoc соединение. Настроив Ad-Hoc WiFi между домашним компьютером и смартфоном, я получила возможность из дома звонить через SIP-клиент моего мобильника. Но главное — я смогла заставить дочку звонить на чужие мобильные не с домашнего МГТСовского телефона, а через SIP ее Nokia E70 (заставить ребенка надеть наушники и звонить с компа было нереально — она привыкла скакать по квартире, часами болтая по телефону). Экономия составила почти тысячу в месяц :)

Описанное ниже я делала, имея:
— компьютер с Fedora 7;
— WiFi-донгл ASUS WL-169gE;
— смартфон Nokia E61.

Если в вашем компьютере нет встроенного WiFi-модуля, купим внешний USB WiFi-адаптер и поколдуем над драйверами. Если же WiFi-модуль встроенный и определился системой (как в моем случае), переходим к пункту, посвященному настройке сетевого соединения.

УСТАНОВКА ДРАЙВЕРА
Для подключения своего USB WiFi-адаптера ASUS WL-169gE я воспользовалась утилитой ndiswrapper, которую установила следующим образом (замечу, что в начале установки WiFi-адаптер НЕ ДОЛЖЕН быть подключен к компьютеру):
# yum install ndiswrapper kmod-ndiswrapper

Драйвера, идущие с адаптером на CD, не годятся, поэтому пришлось скачать свежую версию с сайта www.asus.com и распаковать драйвер для Windows XP. Установим эти драйвера с помощью ndiswrapper (инструкцию для установки этого и других адаптеров можно найти на ndiswrapper.sourceforge.net/joomla/index.php?/component/option,com_openwiki/Itemid,33/id,list_a/):
# /usr/sbin/ndiswrapper -i bcmrndis.inf
# cp RNDISMPK.sys /etc/ndiswrapper/bcmrndis/rndismpk.sys
# cp usb8023k.sys /etc/ndiswrapper/bcmrndis/

Посмотрим на статус только что установленного драйвера:
# /usr/sbin/ndiswrapper -l
bcmrndis: driver installed

Теперь пропишем в файле /etc/udev/rules.d/99-custom.rules (если этого файла нет — создадим его) строку:
BUS==«usb», SYSFS{idProduct}==«1717», SYSFS{idVendor}==«0B05», RUN+="/bin/sh -c 'echo 1 > /sys/$devpath/device/bConfigurationValue'"

Подключим WiFi-брелок к USB-порту.
Загрузим ndiswrapper в память:
# /sbin/modprobe -v ndiswrapper

А вообще эту команду стоит прописать в rc.local.
Командой
# /sbin/iwconfig
можно посмотреть конфигурацию беспроводной карты.

Чтобы устройство подключалось при загрузке, добавим в /etc/modprobe.conf строку:
alias wlan0 ndiswrapper

Теперь при загрузке система будет находить и инициализировать WiFi-адаптер.

НАСТРОЙКА СЕТЕВОГО СОЕДИНЕНИЯ НА КОМПЬЮТЕРЕ

Создадим на компьютере 6 файлов. На том компе, к которому я подключала внешний WiFi, система определила WiFi-адаптер как устройство с именем wlan0. На ноутбуке со встроенным WiFi-модулем он носит «системное имя» eth1. Соответственно, для моего компа с внешним WiFi имя первого из перечисленных ниже файлов — /etc/sysconfig/network-scripts/ifcfg-wlan0 (этого файла не было в системе, я его создала), а для ноута со встроенным модулем — /etc/sysconfig/network-scripts/ifcfg-eth1 (этот файл уже существовал, и я просто отредактировала его, сделав на всякий случай копию старого файла). Итак, вот 6 файлов, определяющих конфигурацию сетевого соединения:
/etc/sysconfig/network-scripts/ifcfg-имя WiFi-адаптера
/etc/sysconfig/network-scripts/keys-имя WiFi-адаптера
/etc/sysconfig/networking/devices/ifcfg-имя WiFi-адаптера
/etc/sysconfig/networking/devices/keys-имя WiFi-адаптера
/etc/sysconfig/networking/profiles/default/ifcfg-имя WiFi-адаптера
/etc/sysconfig/networking/profiles/default/keys-имя WiFi-адаптера

В файлах keys-имя WiFi-адаптера пропишем строку (укажите здесь свои 13 цифр, которые будут использоваться в качестве ключа для доступа к сети):
KEY=s:1234567890123

А в файл ifcfg-имя WiFi-адаптера — конфигурацию WiFi-адаптера, назначив ему IP-адрес 10.0.0.1, а WiFi-сети — имя my_wifi:
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
ONBOOT=yes
USERCTL=yes
IPV6INIT=no
PEERDNS=yes
TYPE=Wireless
DEVICE=имя WiFi-адаптера
HWADDR=
BOOTPROTO=none
DOMAIN=
ESSID=my_wifi
CHANNEL=3
MODE=Ad-Hoc
RATE=Auto
NETMASK=255.255.255.0
DHCP_HOSTNAME=
IPADDR=10.0.0.1


Перезагрузимся или включим только что произведенные настройки без перезагрузки, скомандовав:
# /sbin/ifup wlan0

НАСТРОЙКА СЕТЕВОГО СОЕДИНЕНИЯ НА СМАРТФОНЕ

Связь -> Дисп.соед. -> Доступн.WLAN. В списке обнаруженных сетей должна появиться только что созданная my_wifi. Закроем список сетей и перейдем к «рабочему столу» телефона. Теперь Меню -> Средства -> Настройки -> Соединения -> Точки доступа. Функции -> Новая тчк доступа -> Исп. стд параметры. Заполним появившиеся поля настройки соединения:
Имя соединения: my_wifi
Канал данных: WLAN
Имя сети WLAN: поиск сетевых имен
Состояние сети: Открытая
Режим сети WLAN: Одноранговая
Режим защиты WLAN: WEP
Пар. защиты WLAN:
Текущий ключ WEP: #1
Тип аутентификац.: Открытый
Парам. ключа WEP:
Шифрование WEP: 64 бит
Формат ключа WEP: ASCII
Ключ WEP: 1234567890123 (сюда нужно прописать те 13 цифр, которые мы ранее указали в файлах keys-wlan0)


Теперь назначим телефону IP:
Функции -> Доп.параметры -> Настройки IPv4
IP-адрес телефона: 10.0.0.2
Маска подсети: 255.255.255.0
Шлюз по умолчанию: 10.0.0.1
Адрес DNS: сюда пропишем адреса DNS-серверов, которые указаны в на компьютере в настройках соединения интернет
.

Теперь, запустив на смартфоне PuTTY, браузер или FTP-клиент, мы можем соответственно, работать на компьютере в текстовой консоли, обращаться к нему как к Web- или FTP-серверу. Главное, чтобы на компьютере крутился Apache и какой-нибудь FTP-сервер (о простейшей настройке компа как сервера я уже писала).

НАСТРОЙКА РАБОТЫ С КИРИЛЛИЦЕЙ ДЛЯ PuTTY

Так как у меня по умолчанию стоит локаль ru_RU.UTF-8 (проверить локаль можно командой $ locale), то для того, чтобы при входе со смартфонной PuTTY читабельными были все символы, а не только латынь, пришлось дописать в конец файла ~/.bashrc следующие команды:
if [[ "$TERM" = «xterm» ]] && [[ "$LANG" = *.UTF-8 ]]; then
# putty needs it to enable utf-8
echo -ne '\e%G'
fi


ВЫХОД В ИНТЕРНЕТ

На компьютере создадим файл /opt/iptables.txt и введем в него следующий текст. Внимание: в приведенном ниже тексте замените в трех местах адрес 130.234.201.155 на IP-адрес своего компьютера в локальной сети (домашней или рабочей, через которую ваш комп может выходить в интернет), например на 192.168.1.2, а встречающуюся один раз пару 130.234.0.0/255.255.0.0 на данные, соответствующие настройкам вашей сети, например, 192.168.1.0/255.255.255.0):

# Generated by iptables-save v1.3.5 on Tue Dec 12 06:08:26 2006
*nat
:PREROUTING ACCEPT [102343:16097956]
:POSTROUTING ACCEPT [11574:715293]
:OUTPUT ACCEPT [11574:715293]
-A POSTROUTING -s 10.0.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 130.234.201.155
COMMIT
# Completed on Tue Dec 12 06:08:26 2006
# Generated by iptables-save v1.3.5 on Tue Dec 12 06:08:26 2006
*filter
:INPUT ACCEPT [746408:376053423]
:FORWARD ACCEPT [69495:52803710]
:OUTPUT ACCEPT [314025:40294091]
-A INPUT -s 130.234.0.0/255.255.0.0 -d 130.234.201.155 -p tcp -m tcp --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -d 130.234.201.155 -p tcp -m tcp --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -j DROP
COMMIT
# Completed on Tue Dec 12 06:08:26 2006


Запустим нашу Ad-Hoc сеть, скомандовав:
# /sbin/sysctl -w net.ipv4.ip_forward=1
# /sbin/iptables-restore ./iptables.txt


Теперь смартфон может подключаться не только к установленным на НК Web- и FTP-серверам, но и заходить и на интернет-сайты, подключаться к FTP-серверам «большой» сети.

Оригинал моей статьи в ЖЖ
Теги:
Хабы:
Всего голосов 13: ↑11 и ↓2+9
Комментарии8

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн