Мы будем использовать 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. Итак, я создал сценарий для этого, который позволяет сделать это с меньшими усилиями.
Убедитесь, что вы указали полный путь к файлу. И вы сделали. Теперь перезагрузите компьютер, чтобы увидеть изменения