Bài 15: Access Point

Giả sử RPI đang kết nối với mạng LAN qua cổng ethernet và đang được cắm USB wifi. Chúng ta có thể cấu hình RPI như một access point, kết nối với các thiết bị không dây khác và định tuyến thông tin về cổng ethernet (và internet).

Các bước cài đặt

  1. Cấu hình wireless adapter với ip tĩnh
  2. Cài đặt và cấu hình DHCP server
  3. Cài đặt và cấu hình access point daemon
  4. Cấu hình định tuyến IP giữa wireless và ethernet

Giả sử ip ethernet của RPI là 10.0.1.20, gateway 10.0.1.1 
Ta cấu hình ip wireless của RPI cùng lớp mạng, thí dụ là 10.0.2.1 
Các thiết bị wireless kết nối với RPI như access point sẽ được DHCP server cấp ip từ 10.0.2.2 đến 10.0.2.10

1. Cấu hình wireless adapter với ip tĩnh (thí dụ 10.0.2.1)

Chỉ cần viết lại file /etc/network/interfaces với thông tin thích hợp (xem Bài 6) và reboot

auto lo
iface lo inet loopback

#auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.0.1.20
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.1

allow-hotplug wlan0
iface wlan0 inet static
address 10.0.2.1
netmask 255.255.255.0
gateway 10.0.1.1

Với Raspbian Jessie có thể khai báo ip tĩnh trong dhcpcd.conf

#Ghi vào cuối file /etc/dhcpcd.conf
interface eth0
static ip_address=10.0.1.20/24
static routers=10.0.1.1
static domain_name_servers=10.0.1.1
interface wlan0
static ip_address=10.0.2.1/24
static routers=10.0.1.1
static domain_name_servers=10.0.1.1

và đánh dấu # trước các dòng wpa- trong /etc/network/interfaces (không dùng)

Khởi động lại RPi, rồi chạy lệnh hostname –I, nếu thấy cả 2 ip của eth0wlan0 thì đúng

2. Cài đặt và cấu hình DHCP server

sudo apt-get install isc-dhcp-server

Soạn thảo file cấu hình /etc/dhcp/dhcpd.conf, đặt dấu #  trước option domain-name và bỏ dấu # trước authoritative;
Thêm các dòng sau vào cuối file

subnet 10.0.2.0 netmask 255.255.255.0 {
range 10.0.2.2 10.0.2.10;
option broadcast-address 10.0.2.255;
option routers 10.0.2.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Các ip bên trên chỉ liên quan đến lớp mạng của access point. Để wireless là mặc định đối với các yêu cầu DHCP, sửa file /etc/default/isc-dhcp-server, đổi INTERFACES=”” thành INTERFACES=”wlan0″

3. Cài đặt và cấu hình access point daemon

sudo apt-get install hostapd

Soạn thảo file cấu hình /etc/hostapd/hostapd.conf, gồm các dòng

interface=wlan0
ssid="Tên mạng access point RPI"
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
#Đổi thành 1 nếu tạo mạng ẩn
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase="Mật khẩu của mạng"
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Thông báo cho hostapd biết vị trí file cấu hình bằng cách sửa file /etc/default/hostapd, bỏ dấu # trước DAEMON.CONF và sửa thành

DAEMON_CONF="/etc/hostapd/hostapd.conf"

4. Cấu hình định tuyến IP giữa wireless và ethernet

Soạn thảo /etc/sysctl.conf cho phép chuyển tiếp IP

Tìm đến dòng Uncomment the next line to enable packet forwarding for IPv4 và bỏ dấu # trước dòng tiếp theo

net.ipv4.ip_forward=1

Chạy dòng lệnh sau để cho phép chuyển tiếp IP ngay lập tức

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Bây giờ, đặt RPI trờ thành router qua các dòng lệnh sau

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Để lưu cài đặt trên, chạy dòng lệnh sau

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Cuối cùng, thêm dòng sau đây vào cuối file /etc/network/interfaces

pre-up iptables-restore < /etc/iptables.ipv4.nat

 

Chú thích

Nếu USB Wifi không được hỗ trợ bởi hostapd mặc định (báo lỗi driver không tìm thấy), chúng ta phải cài một phiên bản khác có driver chúng ta cần, thí dụ

wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd-1.1/hostapd
sudo make
sudo make install

Leave a Comment

Filed under Software

Leave a Reply