Labels

Thứ Hai, 25 tháng 6, 2012

Cấu hình WiFi Hotspot / Access Point trên Ubuntu (hoặc các bản linux tương tự)



WiFi hay Wireless Fidelity đuợc ám chỉ như là công nghệ Lan không dây đuợc phát triển dựa trên chuẩn IEEE 802.11a/b/g. (Bluetooth thì hơi khác à nha, nó sử dụng tần số radio thấp hơn WIFI và dựa trên chuẩn IEEE 802.15.1)

Mạng Lan không dây là lựa chọn của bạn nếu:
  • Bạn muốn di chuyển đến bất cứ đâu trong nhà bạn với chiếc laptop thân yêu mà vẫn kết nối đuợc lan và net ( vd; như tui ôm máy PPC vào WC để chat nè )
  • Bạn không muốn thêm bất cứ dây dợ lằng nhằng đi lòng vòng trong nhà bạn ( đặc biệt là khi nhà bạn có nhiều máy).
Để tạo một mạng không dây ở nhà, phổ biến nhấ là dung một WIFI access point. Một access point đóng vai trò như là một cái Hub hoặc switch như trong một mạng Lan có dây điểm kết nối trung tâm - kết nối các thiết bị máy tính (pocket pc, laptop, desktop) vơi nhau hoặc kết nối mạng không dây với mạng có dây hay kết nối với Intờnét.

Để cấu hình một Access Point ta cần chuẩn bị 1 laptop có wifi hoặc nếu không có thì mua 1 card/usb wifi gắn vào máy. Ta cần thực hiện các bước sau:
  1. Cài đặt và cấu hình hostapd để phát wifi
  2. Cài đặt và cấu hình DNS Server để tự cấp phát ip cho thiết bị kết nối
  3. Chia sẻ internet từ LAN/3G cho Wifi
  4. Khuyến mãi thêm vài thủ thuật ^^!
Tất cả các lệnh dưới đây điều phải chạy dưới quyền root nên bạn có thể dùng quyền root bằng lệnh sudo -i trước thi thực hiện các bước bên dưới

1. Cài đặt và cấu hình hostapd

Việc cài đặt đơn giản chỉ việc gõ hoặc copy 3 dòng lệnh bên dưới vào Terminal (Mở cửa sổ Terminal bằng phím tắt Ctrl-Alt T):
apt-get install hostapd 
Mở tệp /etc/hostapd/hostapd.conf lên để chỉnh sửa bằng lệnh (ví dụ khác làm tương tự với lệnh nano)
nano /etc/hostapd/hostapd.conf 
Nội dung cần sửa
interface=wlan0
driver=nl80211
ssid=MyAP
hw_mode=g
channel=11
wpa=1
wpa_passphrase=MatKhau
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_ptk_rekey=600
(Những chỗ in đỏ bạn có thể sửa đổi cho phù hợp, thường có 1 card wifi thì là wlan0)
Cấu hình cho hostapd khởi động cùng với Ubuntu (nếu cần thiết) bằng cách chỉnh sửa tệp /etc/default/hostapd với nội dung

RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-dd"
Bây giờ đã có thể khởi hostapd bằng dòng lệnh
hostapd -dd /etc/hostapd/hostapd.conf
Tuy nhiên chúng ta cần thực hiện bước 2 và 3 mới có thể cấp phát ip và  truy cập internet trên thiết bị khác.

2. Cài đặt và cấu hình DNS Server

Gõ hoặc copy 3 dòng lệnh bên dưới vào Terminal 
apt-get install dhcp3-server 
Mở tệp /etc/dhcp/dhcpd.conf lên để thêm vào cuối
subnet 10.10.0.0 netmask 255.255.255.0 {
        range 10.10.0.25 10.10.0.50;
        option domain-name-servers 8.8.8.8, 208.67.222.222;
        option routers 10.10.0.1;
}
Chỉnh sửa /etc/default/dhcp3-server 
INTERFACES="wlan0"
Cấu hình ip cho cho wlan0 (card wifi)
ifconfig wlan0 10.10.0.1
Tuy nhiên khi khởi động lại máy tính ip sẽ bị mất. Nếu muốn sử dụng lâu dài các bạn mở tệp /etc/network/interfaces để thêm vào nội dung
iface wlan0 inet static
 address 10.10.0.1
 netmask 255.255.255.0
Sau khi thực hiện bước này thì Access Point của bạn đã có thể cấp phát ip cho máy trạm, tuy nhiên để máy trạm truy cập được internet thì cần bước 3  ^^!

3. Chia sẻ internet từ LAN/3G cho Wifi

Ở bước này điều chúng là cần làm là "chỉ đường" (làm router) cho wifi ra internet thông qua eth0 (mạng dây), hoặc ppp0 (quay số, 3g). Số in đỏ tùy thuộc vào số thứ tự card mạng, nếu chỉ có một card thì luôn là 0
Ở ví dụ này tôi dùng 3G để ra internet nên tôi sẽ dùng ppp0, nếu các bạn dùng mạng dây thì thay thế bằng ethnhé.
Bật  ip_forward và chỉnh iptables bằng 2 dòng lệnh
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Lưu lại thiếp lập iptables của bạn
Tạo tập tin iptables trong thư mục /etc/network/if-pre-up.d bằng lệnh bên dưới (ở đây tôi sử dụng lệnh cd để dời đến thư mục /etc/network/if-pre-up.d/ vì bước kế có việc dùng tiếp)
cd /etc/network/if-pre-up.d/
nano iptables
Dán vào nội dung
#!/bin/sh

# Load iptables rules before interfaces are brought online
# This ensures that we are always protected by the firewall
#
# Note: if bad rules are inadvertently (or purposely) saved it could block
# access to the server except via the serial tty interface.
#

RESTORE=/sbin/iptables-restore
STAT=/usr/bin/stat
IPSTATE=/etc/iptables.conf

test -x $RESTORE || exit 0
test -x $STAT || exit 0

# Check permissions and ownership (rw------- for root)
if test `$STAT --format="%a" $IPSTATE` -ne "600"; then
  echo "Permissions for $IPSTATE must be 600 (rw-------)"
  exit 0
fi

# Since only the owner can read/write to the file, we can trust that it is
# secure. We need not worry about group permissions since they should be
# zeroed per our previous check; but we must make sure root owns it.
if test `$STAT --format="%u" $IPSTATE` -ne "0"; then
  echo "The superuser must have ownership for $IPSTATE (uid 0)"
  exit 0
fi

# Now we are ready to restore the tables
$RESTORE < $IPSTATE
Tạo quyền thực thi cho tệp iptables và lưu cấu hình hiện tại vào /etc/iptables.conf
chmod +x iptables
chown root:root iptables
iptables-save > /etc/iptables.conf
Mở tệp /etc/sysctl.conf tìm dòng 

#net.ipv4.ip_forward=1
Xóa # đằng trước để tự bật ip_forward cho ipv4 khi khởi động
net.ipv4.ip_forward=1

Xong rồi! Lần lượt thực hiện các yêu cầu sau sẽ có wifi ngon lành (nếu không rành thì khởi động lại máy là ok ^^!)
  • Stop hostapd
  • Stop dhcp server
  • Restart network (or rather ifup wlan0 / ifconfig wlan0 10.10.0.1 would do)
  • Restart dhcp server
  • Start hostapd

4. Khuyến mãi 

  • Bạn có thể kiểm tra card mạng hỗ trợ wifi bằng lệnh iwconfig
  • ... ^^!
p/s: Bài viết còn nhiều thiếu xót mong các bạn góp ý thêm
Chí Thanh

3 nhận xét:

geekcomp nói...

Bài viết có chất lượng, nhưng mình góp ý với bạn là hostapd chỉ dùng cho một số loại card wifi mà thôi, nên hãy giới hạn lại cho chính xác nhé

TCT nói...

Cảm ơn bạn!

Trieu Thieu nói...

bạn có thể giúp mình: các công cụ phát wifi trên linux tương tự trên hostapd là những công cụ nào không?

Đăng nhận xét