Для цього ми будемо використовувати 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. Отже, я створив для цього сценарій, який дозволяє зробити менший біль.
Переконайтесь, що ви вказали повний шлях до файлу. І ви закінчили. Тепер перезавантажте, щоб побачити зміни