Debian Linux: ICS или делимся интернетом
2016-01-22 12:21:27

   Итак, вводная: есть компьютер с двумя сетевыми интерфейсами под управлением линукс при чем из одного из интерфейсов "сочиться" интернет, а в другой сей интернет нужно смаршрутизировать, так, чтоб клиент мог подключиться к этому компьютеру как к роутеру, раздающему интернет.

   Первым делом настроим нашу систему так, чтоб она стала linux-маршрутизатором

   Открываем наной файл

#nano /etc/sysctl.conf
и раскоментируем там строчку
net.ipv4.ip_forward=1
сохраняем, затем перезагружаем ядро (всю систему), чтоб изменения вступили в силу. Можно насильно заставить ядро перечитать сей конфиг командой
#sysctl -p
, либо, если, например, скрипт пишем, то можно выставить сию опцию в горячем режиме, но так, что после перезагрузки все пропадет командой
#sysctl -w net.ipv4.ip_forward="1"

   Теперь скомандуем ядру выполнять маршрутизацию на нужный интерфейс

   

iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i wlan0 -m state —state ESTABLISHED,RELATED -j ACCEPT

   Само собой, вместо wlan0 указываем то сетевой интерфейс, которой у нас смотрит в интернет. УсЁ! Оттак совсем несложно.

   Теперь если назначить интерфейсу eth0 ip-адресс 192.168.0.1, подключить к нему Ethernet-кабель и на другом конце сетевому интерфейсу назначить ip-адресс 192.168.0.2, маску подсети 255.255.255.0 и шлюз по умолчанию 192.168.0.1 а так же указать ip-адреса DNS-серверов, скажем 8.8.8.8 и 8.8.8.4 то на втором компьютере появится интернет. Однако настраивать все ручками — не самый удобный вариант — будем устранять.

   Во-первЫх строках сваво письма, хочу Вас спросить, уважаемый Билл, а не запилить ли нам bash-скриптик, в который сложить все команды, необходимые для включения "раздачи интернета" aka NAT. Создаем файл скрипта:

   

#nano /usr/bin/nat.sh

   И поместим туда следующие строки:

#!/bin/bash

   # Разрешаем ядру работать маршрутизатором sysctl -w net.ipv4.ip_forward="1"

   # Включаем форвардинг echo 1 > /proc/sys/net/ipv4/ip_forward

   # Сброс правил iptables iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT

   # Разрешаем трафик на внутреннем петлевом интерфейсе (lo) iptables -A INPUT -i lo -j ACCEPT

   # Разрешаем доступ из внутренней сети в интернет iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

   # Включаем маскарадинг iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.0.0/24 -j MASQUERADE

   # Разрешаем ответы из внешней сети iptables -A FORWARD -i wlan0 -m state —state ESTABLISHED,RELATED -j ACCEPT

   # Рубим доступ из и-нет во внутреннюю сеть iptables -A FORWARD -i wlan0 -o eth0 -j REJECT

, где wlan0 — сетевой интерфейс, смотрящий в сторону интернета, eth0 — сетевой интерфейс, смотрящий в сторону локальной сети, 192.168.0.0/24 — сеть и маска подсети нашей локалки.

   Следующий шаг — обеспечим раздачу по DHCP ip-адресов в локалку и проброс в локалку сервиса DNS. Для того чтоб раздавать ip-адреса в локальную сеть, наш сетевой интерфейс, который настроен в сторону локалки, мы настроим статически. Для этого правим настройки этого интерфейса (у меня eth0)

   

#nano /etc/network/interfaces

   

allow-hotplug eth0
iface eth0 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        gateway 192.168.0.1
тут, думаю, все ясно что значит что (если нет — спрашивай)

   После этого устанавливаем dnsmasq — специальная утилиту, которая "проксирует" DNS-запросы из локалки и, заодно, умеет работать DHCP-сервером:

#apt install dnsmasq

   Ее конфигурационный файл лежит в /etc/dnsmasq.conf, там нужно раскомментировать и прописать следующие поля:

# указываем сетевой интерфейс, на котором будет работать DHCP-сервер 
interface=eth0

   # указываем диапазон работы DHCP-сервера и время на которое выдается IP адресс dhcp-range=192.168.0.50,192.168.0.150,12h

   Все. Остается перезагрузить dnsmasq командой:

#/etc/init.d/dnsmasq restart

   Ну и организовать (если нужно) автозапуск скрипта /usr/bin/nat.sh

   Теперь точно все — как говорят буржуи, инжой ё пица!

  • anonymous 2016-04-02 05:13:46
    помогло, спасибо большое!
  • bo 2017-03-28 07:49:18
    Пожалуйста! Рад, что статья оказалась кому-то полезной.
Чтоб доказать что Вы не робот причините вред человеку или своим бездействием допустите, чтоб ему был причинен вред решите сложнейший пример:
3 + 2 =
Регистрация