預備
在 Linux 環境下開啟 terminal,先來確定是否有其他會干擾的程式在執行,原則上我們不希望有 networkmanager、wpa_supplicant,以及 dhclient 這三個程式同時在干擾:$ ps -C NetworkManager,wpa_supplicant,dhclient -o pid,comm,user
可能會看到輸出如下,有些時候也會看到 dhclient 出現,雖然這裡暫時沒有:
PID COMMAND USER
29449 NetworkManager root
29456 wpa_supplicant root
這個時候可以先將這些程式關閉,因為USER 是 root 所以需要 sudo 權限:
$ sudo kill 29449 29456
以上兩個步驟也可以透過 aircrack-ng 工具包裡面提供的 airmon-ng 來一次到位:
$ sudo airmon-ng check kill
有可能關閉干擾程式後,無線網卡也被一起關閉了,可以透過 ifconfig 指令來檢查一下,比如說您的無線網卡是 wlan1,但是執行完 ifconfig 卻沒有看到,應該就是被關閉了:
$ ifconfig
可以透過以下指令打開:
$ sudo ifconfig wlan1 up
取得無線基地台的網路名稱 (ESSID)
如果您已經透過其他管道知道無線基地台的網路名稱,此步驟可以跳過。如果您還不確定,您需要透過以下指令來掃描一下無線的 ESSID,假設無線網卡是 wlan1:
$ sudo iwlist wlan1 scan | egrep -i 'address|channel|quality|essid'
可能產生輸出如下:
Cell 01 - Address: 00:11:22:33:44:55
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=54/70 Signal level=-56 dBm
ESSID:"wpa-ap"
可以看到 ESSID,也就是網路名稱是 wpa-ap,您會看到您自己的基地台 ESSID,和此處不同。
產生 WPA 設定檔
我們接著要來產生初始的 WPA 設定檔案,輸入 wpa_passphrase 指令如下:$ wpa_passphrase wpa-ap > wpa-ap.cnf
<輸入 WPA 連線的密碼>
上述的 wpa-ap 是你的無線基地台 ESSID,在這裡假設叫做 wpa-ap,請自行換成您的基地台網路名稱,wpa-ap.cnf 是產生出來的特定檔檔名,可以換成你想要取的檔案名稱。指令按下 Enter 後,會要您輸入連線的密碼,而且會以明文形式顯示在螢幕上,請留意。
這一步驟只需要做一次,之後要連線,可以省略這一步驟。
連線無線基地台
輸入以下指令以透過 wpa_supplicant 程式連線:$ sudo wpa_supplicant -Dnl80211,wext -iwlan1 -cwpa-ap.cnf
以上指令需要以 sudo 權限執行,-D 參數指定 wpa_supplicant 可以使用的驅動程式,原則上都是 nl80211 以及 wext 兩種,應該不會改變;-i 指定要使用的界面;-c 指定剛剛產生出來的設定檔。可以注意到,所有參數和子參數中間都沒有空格。
如果正常連線,會看到類似下面的輸出:
wlan1: SME: Trying to authenticate with 00:11:22:33:44:55 (SSID='wpa-ap' freq=2437 MHz)
wlan1: Trying to associate with 00:11:22:33:44:55 (SSID='wpa-ap' freq=2437 MHz)
wlan1: Associated with 00:11:22:33:44:55
wlan1: WPA: Key negotiation completed with 08:60:6e:d0:b5:34 [PTK=CCMP GTK=CCMP]
wlan1: CTRL-EVENT-CONNECTED - Connection to 00:11:22:33:44:55 completed (auth) [id=0 id_str=]
您也可以讓 wpa_supplicant 自動在背景繼續執行,否則您的 terminal 一關,連線就中斷了:
$ sudo wpa_supplicant -Dnl80211,wext -iwlan1 -cwpa-ap.cnf -B
-B 參數可以讓程式自動以 daemon 形式在背景繼續執行。
透過 DHCP 取得網際網路連線資訊
最後一步,通常家用無線基地台都會提供 DHCP 服務,也就是大家口中常說的 IP 分享器功能,所以我們要透過 DHCP 協定來設定 IP、netmask、routing table,以及 DNS 伺服器等等相關資訊。執行指令如下:$ sudo dhclient wlan1
沒有意外的話,到此就順利完成了!
驗證
可以透過 ifconfig 和 netstat 驗證一下連線資訊:$ ifconfig wlan1
wlan1 Link encap:Ethernet HWaddr 11:22:33:99:99:99
inet addr:192.168.1.122 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4881 errors:0 dropped:317 overruns:0 frame:0
TX packets:3621 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3228932 (3.2 MB) TX bytes:487002 (487.0 KB)
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1
也看一下 DNS 伺服器:
$ cat /etc/resolv.conf
nameserver 192.168.1.1
總結取得的 IP 是 192.168.1.122,routing table 也更改預設路由是 wlan1,閘道是 192.168.1.1,並且 DNS 伺服器是 192.168.1.1。這代表無線基地台(也就是我們通往網際網路的閘道)的 IP 是 192.168.1.1,也同時提供 DNS 服務。
沒有留言:
張貼留言