Chúng tôi sẽ sử dụng dnsmasq
gói cho mục đích này vì nó được kết hợp máy chủ DHCP và DNS và cũng dễ dàng cấu hình.
Nếu bạn muốn một cái gì đó nhiều hơn một chút 'nặng', bạn có thể sử dụng
isc-dhcp-server
và bind9
gói cho DHCP và DNS tương ứng, nhưng đối với mục đích của chúng tôi, dnsmasq
hoạt động tốt.
sudo apt-get install dnsmasq
Chúng ta cần cấu hình các giao diện. Chúng tôi sẽ chỉ định một địa chỉ IP tĩnh
eth0
sẽ được sử dụng làm cổng. Mở tệp giao diện
sudo nano /etc/network/interfaces
Chỉnh sửa eth0
phần như thế này:
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
Tiếp theo, chúng tôi sẽ cấu hình dnsmasq
. Các dnsmasq
tập tin cấu hình vận chuyển chứa rất nhiều thông tin về cách sử dụng nó. Vì vậy, tôi sẽ khuyên bạn nên di chuyển nó và tạo một cái mới.
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
Dán đoạn sau vào tập tin mới
interface=eth0 # Use interface eth0
listen-address=192.168.2.1 # listen on
# Bind to the interface to make sure we aren't sending things
# elsewhere
bind-interfaces
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Assign IP addresses between 192.168.2.2 and 192.168.2.100 with a
# 12 hour lease time
dhcp-range=192.168.2.2,192.168.2.100,12h
Chỉnh sửa /etc/sysctl.conf
tập tin để cho phép chuyển tiếp gói
sudo nano /etc/sysctl.conf
Loại bỏ #
từ đầu dòng chứa
net.ipv4.ip_forward=1
Điều này sẽ cho phép chuyển tiếp gói trong lần khởi động lại tiếp theo. Nhưng nếu bạn muốn thử ngay bây giờ mà không cần khởi động lại thì hãy làm điều này.
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Chúng tôi cũng cần chia sẻ kết nối internet của RPi với các thiết bị được kết nối qua Wi-Fi. Chúng tôi sẽ cấu hình NAT giữa eth0
và
wlan0
:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
Tuy nhiên, chúng tôi cần các quy tắc này được áp dụng mỗi khi chúng tôi khởi động lại Pi, vì vậy hãy chạy sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
để lưu quy tắc vào tệp /etc/iptables.ipv4.nat
. Bây giờ chúng ta cần chạy nó sau mỗi lần khởi động lại, vì vậy hãy mở /etc/rc.local
tệp với
sudo nano /etc/rc.local
và ngay phía trên dòng exit 0
, thêm dòng sau:
iptables-restore < /etc/iptables.ipv4.nat
Và đó là tất cả! Bây giờ chỉ cần Khởi động lại RPi của bạn và bạn sẽ có thể truy cập Internet
sudo reboot
Cấu hình trên sẽ không hoạt động trong phiên bản mới hơn của Raspbian. Vì vậy, tôi đã tạo ra một kịch bản cho điều này để có thể giảm bớt đau đớn.
Hãy chắc chắn rằng bạn đã đưa ra đường dẫn đầy đủ đến tập tin. Và bạn đã hoàn thành. Bây giờ khởi động lại để xem những thay đổi