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
- Cấu hình wireless adapter với ip tĩnh
- Cài đặt và cấu hình DHCP server
- Cài đặt và cấu hình access point daemon
- 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 eth0 và wlan0 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