LINUX.ORG.RU

Wifi точка доступа для HTC Wildfire S


0

1

Доброго времени суток. Купил HTC Wildfire S. Выяснлось, что Android не поддерживает работу с ad-hoc сетями. Пришлось разбираться, как переводить WiFi-карточку в режим точки доступа. Стояла Intel WiFi Link 5100 --- драйвера под Linux не поддерживают Master mode. Купил с рук Atheros AR5BXB63, заработала сразу с драйвером ath5k.

dvolosnykh@xakac:~$ lspci -vnn | grep Wireless
06:00.0 Ethernet controller [0200]: Atheros Communications Inc. AR5001 Wireless Network Adapter [168c:001c] (rev 01)
dvolosnykh@xakac:~$ dmesg | grep Atheros
[   21.680659] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70)

Установил hostapd:

dvolosnykh@xakac:~$ sudo cat /etc/hostapd/hostapd.conf 
interface=wlan1
bridge=br0
driver=nl80211
ssid=xakac
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
wpa=3
wpa_passphrase=1234567890
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
dvolosnykh@xakac:~$ 
dvolosnykh@xakac:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:90:f5:8c:4a:ac  
          inet addr:192.168.55.151  Bcast:192.168.55.255  Mask:255.255.255.0
          inet6 addr: fe80::290:f5ff:fe8c:4aac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3505136 errors:0 dropped:3262 overruns:0 frame:0
          TX packets:1819583 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5031292449 (5.0 GB)  TX bytes:138240106 (138.2 MB)
          Interrupt:46 Base address:0x8000 

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6192 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6192 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:586316 (586.3 KB)  TX bytes:586316 (586.3 KB)

mon.wlan1 Link encap:UNSPEC  HWaddr 00-1D-D9-29-00-6C-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5328 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:352746 (352.7 KB)  TX bytes:0 (0.0 B)

wlan1     Link encap:Ethernet  HWaddr 00:1d:d9:29:00:6c  
          inet addr:10.42.43.1  Bcast:10.42.43.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:d9ff:fe29:6c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26734 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21584 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3433974 (3.4 MB)  TX bytes:10725844 (10.7 MB)
dvolosnykh@xakac:~$ iwconfig 
lo        no wireless extensions.

eth0      no wireless extensions.

wlan1     IEEE 802.11bg  Mode:Master  Frequency:2.412 GHz  Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          
mon.wlan1  IEEE 802.11bg  Mode:Monitor  Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

Интерфейс mon.wlan1, судя по всему, результат работы hostapd.

Конфигурация сети:

dvolosnykh@xakac:~$ sudo cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
	address 192.168.55.151
	netmask 255.255.255.0
	gateway 192.168.55.1

#auto wlan1
iface wlan1 inet static
	address 10.42.43.1
	netmask 255.255.255.0
	pre-up		iptables --table mangle --append PREROUTING --in-interface wlan1 --jump TTL --ttl-set 64
	pre-up		iptables --table nat --append PREROUTING --in-interface wlan1 --protocol tcp --match multiport --destination-ports 80,25,443,1025:65535 -j REDIRECT --to-port 3128
	pre-up		iptables --table nat --append POSTROUTING --out-interface eth0 --jump MASQUERADE
	post-down	iptables --table nat --flush

dvolosnykh@xakac:~$ sudo cat /etc/hosts
127.0.0.1	xakac	localhost.localdomain	localhost
::1	xakac	localhost6.localdomain6	localhost6
127.0.1.1	xakac

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
dvolosnykh@xakac:~$ sudo cat /etc/resolv.conf 
# Generated by NetworkManager
search icn.bmstu.ru
nameserver 195.19.37.129
nameserver 195.19.37.140

IP-forwarding включил:

dvolosnykh@xakac:~$ sed 's/#.*//;s/^[ \t]*//;s/[ \t]*$//' /etc/sysctl.conf | grep -v '^$'
net.ipv4.ip_forward=1

DNS и DHCP настроил:

dvolosnykh@xakac:~$ sed 's/#.*//;s/^[ \t]*//;s/[ \t]*$//' /etc/dnsmasq.conf | grep -v '^$'
domain-needed
bogus-priv
interface=wlan1
dhcp-range=10.42.43.10,10.42.43.254,12h
log-dhcp
log-facility=/var/log/dnsmasq.log

Установил Squid как прозрачный proxy-сервер:

dvolosnykh@xakac:~$ sudo sed 's/#.*//;s/^[ \t]*//;s/[ \t]*$//' /etc/squid/squid.conf | grep -v '^$'
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl virbr0net src 192.168.122.0/24
acl wifinet src 10.42.43.0/24
acl SSL_ports port 443
acl SSL_ports port 563
acl SSL_ports port 873
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 25
acl Safe_ports port 110
acl Safe_ports port 143
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 631
acl Safe_ports port 873
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow virbr0net
http_access allow wifinet
http_access allow localhost
http_access deny all
icp_access allow virbr0net
icp_access allow wifinet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern (Release|Package(.gz)*)$	0	20%	2880
refresh_pattern .		0	20%	4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid

PS. Из-за ограничения на размер сообщения --- всё не влезло. См. продолжение ниже.



Последнее исправление: dvolosnykh (всего исправлений: 1)

(+)

В общем домучал до такой работоспособности: к этой точке доступа подсоединяются Nokia 5530, ещё один ноутбук с Ubuntu 10.10 и HTC Wildfire S. Без необходимости что-то настраивать, например: параметры сети или указывать proxy-сервер, - всё автоматически.

Но когда пытаюсь воспользоваться каким-либо Google-сервисом, просят Google account, выбираю «Войти», логин, пароль --- в log'и squid'а сыпятся сообщения:

1306178844.550    213 10.42.43.187 TCP_MISS/400 557 POST http://android.clients.google.com/market/api/ApiRequest - DIRECT/74.125.232.206 text/html
1306178857.761      0 10.42.43.187 TCP_DENIED/400 1686 NONE NONE:// - NONE/- text/html
TCP_DENIED'ов --- так вообще много. Выяснить причину проблемы не получается. Да ещё в полях одни NONE'ы...

Попытался посмотреть на пересылаемые пакеты в Wireshark'е, но, честно говоря, мало что в этом понимаю. Сохранил «live capture» --- там много записей:

HTTP/1.0 400 Bad Request
Server: squid/2.7.STABLE9
Date: Mon, 23 May 2011 19:32:51 GMT
Content-Type: text/html
Content-Length: 1389
X-Squid-Error: ERR_INVALID_REQ 0
X-Cache: MISS from xakac
X-Cache-Lookup: NONE from xakac:3128
Via: 1.0 xakac:3128 (squid/2.7.STABLE9)
Connection: close
В отображаемом графическим интерфейсом списке пакетов смущает достаточно частые TCP-пакеты с установленным флагом RST, например:
14	8.471708000	10.42.43.187	74.125.232.198	TCP	45925 > https [RST, ACK] Seq=81 Ack=1688 Win=64088 Len=0 TSV=6140334 TSER=3121920
Причём, именно по HTTPS и именно от телефона (10.42.43.187) к некоему внешнему IP. Видимо, это как-то связано с тем, что Squid какие-то запросы не пропускает.

В общем вот такая проблема. Опыт в настройке сетей небольшой.

Руководствовался следующими ресурсами:

NetworkManager удалил совсем.

За последние 3 дня получил, считаю, неплохой результат. А дальше --- уже глубоких познаний не хватает. Кто разбирается --- прошу помочь. Может, кто уже делал что-то подобное: здесь, на LOR'е, судя по поиску, телефоны на Android'е много у кого.

Заранее, спасибо.

dvolosnykh
() автор топика
Ответ на: комментарий от visual_pipe

Сообщение получалось слишком большое, пришлось разбивать и дописывать. См. ниже.

PS. Окружение:

dvolosnykh@xakac:~$ uname -a
Linux xakac 2.6.38-9-generic #43-Ubuntu SMP Thu Apr 28 15:23:06 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

dvolosnykh
() автор топика
Ответ на: комментарий от visual_pipe

Сделал так (acl'ы не стал выключать, т.к. должны сами стать неэффективными, ибо не используются):

acl SSL_ports port 443
acl SSL_ports port 563
acl SSL_ports port 873
...
#http_access deny CONNECT !SSL_ports

dvolosnykh@xakac:~$ sudo service squid restart
squid start/running, process 21185

Вроде ничего не изменилось.

Также сейчас отметил, что повторяется последовательность пакетов:

70	13.132772	10.42.43.187	74.125.232.197	TCP	59320 > https [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSV=6399328 TSER=0 WS=3
71	13.132822	74.125.232.197	10.42.43.187	TCP	https > 59320 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSV=3381165 TSER=6399328 WS=7
72	13.140867	10.42.43.187	74.125.232.197	TCP	59320 > https [ACK] Seq=1 Ack=1 Win=64240 Len=0 TSV=6399329 TSER=3381165
73	13.144933	10.42.43.187	74.125.232.197	SSL	Client Hello
74	13.144971	74.125.232.197	10.42.43.187	TCP	https > 59320 [ACK] Seq=1 Ack=81 Win=14592 Len=0 TSV=3381166 TSER=6399329
75	13.145271	74.125.232.197	10.42.43.187	SSL	Continuation Data
76	13.145336	74.125.232.197	10.42.43.187	SSL	Continuation Data
77	13.145506	74.125.232.197	10.42.43.187	TCP	https > 59320 [FIN, ACK] Seq=1687 Ack=81 Win=14592 Len=0 TSV=3381166 TSER=6399329
78	13.146694	10.42.43.187	74.125.232.197	TCP	59320 > https [ACK] Seq=81 Ack=298 Win=64088 Len=0 TSV=6399329 TSER=3381166
79	13.147479	10.42.43.187	74.125.232.197	TCP	59320 > https [ACK] Seq=81 Ack=1687 Win=63592 Len=0 TSV=6399329 TSER=3381166
80	13.148039	10.42.43.187	74.125.232.197	TCP	59320 > https [RST, ACK] Seq=81 Ack=1688 Win=64088 Len=0 TSV=6399329 TSER=3381166

Ещё время от времени вываливаются:

159	314.830100	10.42.43.187	74.125.232.200	TCP	[TCP Dup ACK 152#1] 44087 > http [ACK] Seq=402 Ack=1 Win=64240 Len=0 TSV=6429468 TSER=3411300 SLE=413 SRE=558
...
161	315.031284	74.125.232.200	10.42.43.187	TCP	[TCP Retransmission] [TCP segment of a reassembled PDU]

dvolosnykh
() автор топика
Ответ на: комментарий от visual_pipe

Поведение изменилось, но работать не стало.

Теперь вследствие попытки установить связь с серверами Google происходит следующее:

No.     Time        Source                Destination           Protocol Info
    364 108.186743  10.42.43.187          74.125.232.194        TCP      41976 > http [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSV=6498883 TSER=0 WS=3
    365 108.186832  74.125.232.194        10.42.43.187          TCP      http > 41976 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSV=3480815 TSER=6498883 WS=7
    366 108.189545  10.42.43.187          74.125.232.194        TCP      41976 > http [ACK] Seq=1 Ack=1 Win=64240 Len=0 TSV=6498883 TSER=3480815
    367 108.193026  10.42.43.187          74.125.232.194        HTTP     POST /market/api/ApiRequest HTTP/1.1  (application/x-www-form-urlencoded)
    368 108.193077  74.125.232.194        10.42.43.187          TCP      http > 41976 [ACK] Seq=1 Ack=402 Win=15616 Len=0 TSV=3480816 TSER=6498884
    369 108.529879  74.125.232.194        10.42.43.187          TCP      [TCP segment of a reassembled PDU]
    370 108.529967  74.125.232.194        10.42.43.187          TCP      [TCP segment of a reassembled PDU]
    371 108.530204  74.125.232.194        10.42.43.187          HTTP     HTTP/1.0 400 Bad Request  (text/html)
    372 108.535429  10.42.43.187          74.125.232.194        TCP      41976 > http [ACK] Seq=402 Ack=413 Win=64088 Len=0 TSV=6498918 TSER=3480850
    373 108.538864  10.42.43.187          74.125.232.194        TCP      41976 > http [ACK] Seq=402 Ack=558 Win=64088 Len=0 TSV=6498918 TSER=3480850
    374 108.540830  10.42.43.187          74.125.232.194        TCP      41976 > http [RST, ACK] Seq=402 Ack=559 Win=64088 Len=0 TSV=6498918 TSER=3480850

Но уже, вроде, лучше.

dvolosnykh
() автор топика
Ответ на: комментарий от dvolosnykh

Похоже, эта последовательность пакетов связана не c входом под аккаунтом, а Market что-то пытается сделать, т.к. при очередной попытке, подобное произошло ещё во время ввода данных в форму.

PS. Забыл в исходном сообщении написать, что со всех аппаратов получается просматривать web-страницы.

dvolosnykh
() автор топика

> Выяснлось, что Android не поддерживает работу с ad-hoc сетями.

4.2. Но нужен root.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.