SSブログ
エステ

Ubuntu 12.04 LTS Server に Aircrack-ngをインストールする [Aircrack-ng]

Linuxマシンから周辺の無線LAN環境を調べるためにAircrack-ngをインストールするべく、apt-get installしたのですが、Ubuntuではaircrac-ngはメンテナンスされていないようで、レポジトリから消えていました。

# apt-get install aircrack-ng
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package aircrack-ng is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  iw:i386 iw

E: Package 'aircrack-ng' has no installation candidate


しかたないので、自分で入れます。


おっと、コンパイルする環境を入れていませんでした。

# apt-get install build-essential

入ったところで、

# tar zxvf aircrack-ng-1.1.tar.gz
# cd aircrack-ng-1.1
# make
make -C src all
make[1]: Entering directory `/root/aircrack-ng-1.1/src'
make -C osdep
make[2]: Entering directory `/root/aircrack-ng-1.1/src/osdep'
Building for Linux
make[3]: Entering directory `/root/aircrack-ng-1.1/src/osdep'
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -fPIC -I..    -c -o osdep.o osdep.c
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -fPIC -I..    -c -o network.o network.c
gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -fPIC -I..    -c -o linux.o linux.c
linux.c: In function ‘is_ndiswrapper’:
linux.c:165:17: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_rate’:
linux.c:334:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_channel’:
linux.c:807:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘linux_set_freq’:
linux.c:896:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘set_monitor’:
linux.c:1022:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘do_linux_open’:
linux.c:1366:12: error: variable ‘unused_str’ set but not used [-Werror=unused-but-set-variable]
linux.c:1352:15: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable]
linux.c: In function ‘get_battery_state’:
linux.c:1982:35: error: variable ‘current’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make[3]: *** [linux.o] Error 1
make[3]: Leaving directory `/root/aircrack-ng-1.1/src/osdep'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/aircrack-ng-1.1/src/osdep'
make[1]: *** [osd] Error 2
make[1]: Leaving directory `/root/aircrack-ng-1.1/src'
make: *** [all] Error 2

なんだ、このエラー??
どうやら、Werrorで警告もエラーにされてしまっている模様。

修正します。

# vi common.mak

CFLAGS          ?= -g -W -Wall -Werror -O3

と書かれているところから、-Werrorを削除して、

CFLAGS          ?= -g -W -Wall -O3

こうします。

再度。

# make
make -C src all
make[1]: Entering directory `/root/aircrack-ng-1.1/src'
make -C osdep
make[2]: Entering directory `/root/aircrack-ng-1.1/src/osdep'
Building for Linux
make[3]: Entering directory `/root/aircrack-ng-1.1/src/osdep'
make[3]: `.os.Linux' is up to date.
make[3]: Leaving directory `/root/aircrack-ng-1.1/src/osdep'
make[2]: Leaving directory `/root/aircrack-ng-1.1/src/osdep'
gcc -g -W -Wall -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0  -Iinclude   -c -o aircrack-ng.o aircrack-ng.c
In file included from aircrack-ng.c:65:0:
crypto.h:12:26: fatal error: openssl/hmac.h: No such file or directory
compilation terminated.
make[1]: *** [aircrack-ng.o] Error 1
make[1]: Leaving directory `/root/aircrack-ng-1.1/src'
make: *** [all] Error 2

おー。今度はopenssl関連か。

# apt-get install libssl-dev

再再度。

# make

でOK

# make install

完了!

Ubuntuで無線LANアクセスポイントを構築 [Hostapd で無線LAN AP構築]

先日購入したZOTAC ZBOX NANO-VD01を活用して、無線LANアクセスポイントを構築します。

ZOTAC VIA Nano X2 U4025 CPU搭載 コンパクトベアボーンPC ZBOXNANO- VD01

ZOTAC VIA Nano X2 U4025 CPU搭載 コンパクトベアボーンPC ZBOXNANO- VD01

  • 出版社/メーカー: ZOTAC
  • メディア: Personal Computers



無線LANアクセスポイントといっても至ってシンプルで、無線LANと有線LANをブリッジしてあげて、無線LANクライアントからのコネクションを受け付けるようにしてあげます。

Ubuntuのインストールにちょっと癖がありましたが、Ubuntu 12.04LTS をインストール後、2つのソフトウェアをインストールします。

hostapd: アクセスポイント機能を提供してくれます

bridge-utils: アクセスポイントの無線LANと有線LANをブリッジしてくれます

# apt-get install bridge-utils hostapd

まずは、hostapdの設定ですが、設定の詳細はこちら

# vi /etc/hostapd/hostapd.conf

--
interface=wlan0
bridge=br0
driver=nl80211
ssid=AP7
channel=5
hw_mode=g
wpa=2
wpa_passphrase=(your password)

wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ieee80211n=1
wmm_enabled=1
ht_capab=[HT40+][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]

macaddr_acl=0
deny_mac_file=/etc/hostapd/hostapd.deny

logger_syslog_level=3
-- 

ついでに、アクセス拒否Macアドレス用ファイルを作成。(空)
# touch /etc/hostapd/hostapd.deny

ht_capabは iw list して得られるCapabilitiesを参考にします。(後述)

# iw list
Wiphy phy0
Band 1:
Capabilities: 0x11ce
HT20/HT40
SM Power Save disabled
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40


さらに、起動時にhostapdが起動するように設定します。

# vi /etc/default/hostapd
--
DAEMON_CONF="/etc/hostapd/hostapd.conf"
--

次に、ブリッジの設定です。

# vi /etc/network/interfaces

--
# Loopback network interface
auto lo
iface lo inet loopback

# Wired network interface
auto eth0
iface eth0 inet static
address 0.0.0.0

# Wireless network interface
auto wlan0
iface wlan0 inet static
address 0.0.0.0

# Bridge network interface
auto br0
iface br0 inet static
address 192.168.1.253
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
bridge_ports eth0 wlan0
bridge_stp off
--

eth0とwlan0のIPアドレスは今回設定しません。(設定しても動きますが、意味が無いので。)192.168.1.253をブリッジのIPアドレスとして設定します。

これでOK
# service hostapd start

で無線LANアクセスポイントの構築完了です。


ところで、iw listの結果から、

HT TX/RX MCS rate indexes supported: 0-7

MCS indexは0から7まで対応していることがわかります。

IEEE 802.11n-2009によれば、
MCS
index
Spatial
streams
Modulation
type
Coding
rate
Data rate (Mbit/s)
20 MHz channel40 MHz channel
800 ns GI400 ns GI800 ns GI400 ns GI
01BPSK1/26.507.2013.5015.00
11QPSK1/213.0014.4027.0030.00
21QPSK3/419.5021.7040.5045.00
3116-QAM1/226.0028.9054.0060.00
4116-QAM3/439.0043.3081.0090.00
5164-QAM2/352.0057.80108.00120.00
6164-QAM3/458.5065.00121.50135.00
7164-QAM5/665.0072.20135.00150.00
82BPSK1/213.0014.4027.0030.00
92QPSK1/226.0028.9054.0060.00
102QPSK3/439.0043.3081.0090.00
11216-QAM1/252.0057.80108.00120.00
12216-QAM3/478.0086.70162.00180.00
13264-QAM2/3104.00115.60216.00240.00
14264-QAM3/4117.00130.00243.00270.00
15264-QAM5/6130.00144.40270.00300.00
163BPSK1/219.5021.7040.5045.00
173QPSK1/239.0043.3081.0090.00
183QPSK3/458.5065.00121.50135.00
19316-QAM1/278.0086.70162.00180.00
20316-QAM3/4117.00130.00243.00270.00
21364-QAM2/3156.00173.30324.00360.00
22364-QAM3/4175.50195.00364.50405.00
23364-QAM5/6195.00216.70405.00450.00
244BPSK1/226.0028.8054.0060.00
254QPSK1/252.0057.60108.00120.00
264QPSK3/478.0086.80162.00180.00
27416-QAM1/2104.00115.60216.00240.00
28416-QAM3/4156.00173.20324.00360.00
29464-QAM2/3208.00231.20432.00480.00
30464-QAM3/4234.00260.00486.00540.00
31464-QAM5/6260.00288.80540.00600.00

ですので、最大で150Mbpsまで対応していることがわかりますが、これは、仕様どおりです。

ht_capabの設定ですが、全く設定しないと、65Mbpsが最大です。ちなみに、ieee80211n=1を設定しないと54Mbpsです。

[HT40+]: 40MHz channelになるので、最大135Mbpsとなります。
[SHORT-GI-40]: さらに400ns GIになるので、最大150Mpbsとなります。

ht_capab=[HT40+][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]

と設定していますが、[TX-STBC][RX-STBC1][DSSS_CCK-40]についてはスピードには効いていないように思います。


アクセスポイントを構築できたのはよいのですが、iPhoneで確認してみるとRSSIが非常に低い。
-90dBmくらい。
えっ?生きてる?って聞きたくなるくらい低い。
MacBook Air/Proから確認しても-70dBmくらい。う〜む。

試しにアンテナを外してみると、ほとんどRSSIは変わらない。つまり、役立たずです。

関係ないですが、ZOTAC ZBOX NANO-VD01を分解してみました。AD10の時みたいに。

image_1.jpeg
ハイ、バラバラです。

image_2.jpeg
グレーのケーブルはBluetoothのアンテナから出てきているものです。


ここで、思いつきました。
このBluetoothのアンテナを無線LAN用に利用できないかと。

bluetoothもIEEE802.11b/gも同じISMバンドで2.4GHz帯を利用するので原理的には使えるはずです。

さっそく選手交代。
(Before)
image.jpeg

(After)
image_4.jpeg

BT/WLAN用のhalfサイズmini PCIモジュールに刺しているアンテナのケーブルを差し替えました。

モジュール的には左が無線LAN、右がBluetoothです。
グレーのケーブルは(本来の)Bluetoothのアンテナに繋がり、黒のケーブルは無線LANのアンテナに繋がります。
(After)の絵ではそれが逆になっています。

偶然にもこの入れ替えでうまくいき、RSSIがかなり改善しました。

AP7が今回構築した無線LANアクセスポイントの名前ですが、

(Before)
スクリーンショット 2012-05-14 15.47.50.png
-66dBmこれは、標準アンテナ使用時。


(After)
スクリーンショット 2012-05-14 15.57.21.png
Bluetoothのアンテナを使用することで、-33dBmに改善。


Max Rateが65Mbpsになっていますが、これは上のhostapd.confをちゃんと設定してあげることで、150Mbpsになります。ネットワークスピードの実測的にはほぼ同じですが。。。
この改善はまた別の話で。

スクリーンショット 2012-05-14 16.10.36.png


ちなみに。iwコマンドで現在のMCS indexやbitrate、オプション設定等を確認できます。

# iw dev wlan0 station dump
Station 00:25:00:4d:f2:2f (on wlan0)
inactive time: 12412 ms
rx bytes: 1158309
rx packets: 6178
tx bytes: 1102416
tx packets: 3873
tx retries: 8961
tx failed: 1
signal:   -63 dBm
signal avg: -64 dBm
tx bitrate: 65.0 MBit/s MCS 7
authorized: yes
authenticated: yes
preamble: short
WMM/WME: yes
MFP: no

あと、iwconfigでtxpowerを設定できるので、出力を変更することで通信品質が向上する可能性があります。
Max16なので、それ以下で設定します。

たとえば、
#  iwconfig wlan0 txpower 12

# iwconfig
lo        no wireless extensions.

br0       no wireless extensions.

wlan0     IEEE 802.11bgn  Mode:Master  Frequency:2.442 GHz  Tx-Power=12 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          
eth0      no wireless extensions.

mon.wlan0  IEEE 802.11bgn  Mode:Monitor  Tx-Power=12 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on




ところで ZOTAC ZBOX NANO-VD01 の無線LANモジュールは

# lspci -vvv

02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
Subsystem: AzureWave Device 2c37
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 28
Region 0: Memory at fe9f0000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000  Data: 0000
Capabilities: [60] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 <512ns, L1 <64us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [160 v1] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [170 v1] Power Budgeting <?>
Kernel driver in use: ath9k
Kernel modules: ath9k


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。