เราจะใช้dnsmasq
แพ็คเกจเพื่อการนี้เพราะมันรวม DHCP และเซิร์ฟเวอร์ DNS และยังง่ายต่อการกำหนดค่า
หากคุณต้องการบางสิ่งบางอย่าง 'หนา' มากกว่านี้คุณสามารถใช้
isc-dhcp-server
และbind9
แพ็คเกจสำหรับ DHCP และ DNS ตามลำดับ แต่สำหรับวัตถุประสงค์ของเราdnsmasq
ทำงานได้ดี
sudo apt-get install dnsmasq
เราจำเป็นต้องกำหนดค่าอินเทอร์เฟซ เราจะกำหนดที่อยู่ IP แบบคงที่
eth0
ซึ่งจะใช้เป็นเกตเวย์ เปิดไฟล์อินเตอร์เฟส
sudo nano /etc/network/interfaces
แก้ไขeth0
ส่วนดังนี้:
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
dnsmasq
ต่อไปเราจะกำหนดค่า dnsmasq
ไฟล์กำหนดค่าที่จัดส่งมามีข้อมูลจำนวนมากเกี่ยวกับวิธีใช้งาน ดังนั้นฉันจะแนะนำให้ย้ายและสร้างใหม่
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
วางสิ่งต่อไปนี้ลงในไฟล์ใหม่
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
แก้ไข/etc/sysctl.conf
ไฟล์เพื่อเปิดใช้งานการส่งต่อแพ็คเก็ต
sudo nano /etc/sysctl.conf
ลบออก#
จากจุดเริ่มต้นของบรรทัดที่มี
net.ipv4.ip_forward=1
นี้จะเปิดใช้งานการส่งต่อแพ็คเก็ตในการรีบูตครั้งต่อไป แต่ถ้าคุณต้องการลองตอนนี้โดยไม่ต้องรีบูทให้ทำสิ่งนี้
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
เราจำเป็นต้องแบ่งปันการเชื่อมต่ออินเทอร์เน็ตของ RPi กับอุปกรณ์ที่เชื่อมต่อผ่าน Wi-Fi เราจะกำหนดค่า NAT ระหว่างeth0
และ
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
อย่างไรก็ตามเราต้องกฎเหล่านี้จะนำมาใช้ทุกครั้งที่เรารีบูต Pi เรียกใช้เพื่อ ที่จะบันทึกกฎไปยังแฟ้มsudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
/etc/iptables.ipv4.nat
ตอนนี้เราจำเป็นต้องเรียกใช้หลังจากรีบูตแต่ละครั้งดังนั้นให้เปิด/etc/rc.local
ไฟล์ด้วย
sudo nano /etc/rc.local
และเหนือบรรทัดexit 0
ให้เพิ่มบรรทัดต่อไปนี้:
iptables-restore < /etc/iptables.ipv4.nat
และนั่นคือทั้งหมด! ตอนนี้เพียงแค่รีบูต RPi ของคุณและคุณจะสามารถเข้าถึงอินเทอร์เน็ตได้
sudo reboot
การกำหนดค่าด้านบนจะไม่ทำงานใน Raspbian รุ่นใหม่กว่า ดังนั้นฉันได้สร้างสคริปต์สำหรับสิ่งนี้ซึ่งทำให้เป็นไปได้ในความเจ็บปวดน้อยลง
ตรวจสอบให้แน่ใจว่าคุณได้กำหนดพา ธ แบบเต็มไปยังไฟล์ และคุณทำเสร็จแล้ว ตอนนี้รีบูตเพื่อดูการเปลี่ยนแปลง