Настройка NAT и DHCP в Debian / Песочница / Хабрахабр



        Приспичило мне настроить NAT(маскарадинг), называйте как хотите. Для чего? Есть две сетевые. Одна eth1 — интернет, вторая eth0 — внутренняя подсеть 192.168.0.0/28Собственно, пакеты из внешней подсети должны перенаправляться во внутреннюю и наоборот.Для начала, нужно включить ip forwarding. Проверим, не включен ли он:$ cat /proc/sys/net/ipv4/ip_forwardЕсли выдаст 0 — выключен, 1 — соответственно включен.Чтобы включить:$ echo 1 > /proc/sys/net/ipv4/ip_forwardА чтобы включит навсегда в файл /etc/sysctl.conf добавляем следующие строчки:net.ipv4.conf.default.forwarding=1 net.ipv4.conf.all.forwarding=1Создаем файл в /etc/network/if-pre-up.d/NAT и делаю исполняемым chmod +x /etc/network/if-pre-up.d/NAT. Теперь, при подъёме интерфейсов в up запускается наш «NAT».Собственно, всё делается через iptables. Содержание файла NAT:# Первым делом очистим существующую таблицу правил:    iptables -F # Добавляем первое правило которое позволит нам не потерять удаленный контроль над сервером     iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT # Прописываем политики по умолчанию: # Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED. # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.     iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #Запрешаем на передачу всё, что не разрешено.     iptables -P INPUT DROP     iptables -P FORWARD ACCEPT     iptables -P OUTPUT ACCEPT # Разрешаем хождение трафика по localhost     iptables -A INPUT -i lo -j ACCEPT #Разрешаем пинг(DROP - запретить)     iptables -A INPUT -i eth1 -p icmp --icmp-type 8 -j ACCEPT #NAT #Должен быть включен ip forwarding iptables -A FORWARD -i eth1 -o eth0 -s 192.168.0.0/28 -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPTТеперь, настроем наш eth0, сделав его шлюзомЛезим в /etc/network/interfaces        address 192.168.0.1         netmask 255.255.255.240         broadcast 192.168.0.15Всё, готово. Но, чтобы не вбивать каждый раз адрес и dns вручную, особенно, если компов несколько, поднимем ещё и dhcp сервер.Для начала установим его:# apt-get install dhcp3-serverОн естественно не запустится, правим файлик конфигурации /etc/dhcp/dhcpd.confКонфиг приблизительно такой:#Опция динамического обновления для dns ddns-update-style none; #Домен и dns'ы option domain-name "admin-pc"; option domain-name-servers <ip dns серверов, если несколько - через запятую>; #Время жизни адресов default-lease-time 600; max-lease-time 7200; # # Для логирования в отдельный файл log-facility local7; #Подсеть из которой выдаются ip #диапазон   #шлюз    #brodcast     #интерфейс на котором работает subnet 192.168.0.0 netmask 255.255.255.240 {   range 192.168.0.2 192.168.0.14;   option routers 192.168.0.1;   option broadcast-address 192.168.0.15;   interface eth0; }Запускаем демона:# /etc/init.d/isc-dhcp-server startПроверяем, работает, радуемся!Но, по умолчанию, логируется всё в /var/log/syslog, что не очень удобно если вам нужно работать с логами.Предлагаю, можно всё в отдельный файл.Создадим файл /etc/rsyslog.d/dhcpd.conf с содержимым:local7.* /var/log/dhcpd.logДля ротации логов в файл /etc/logrotate.d/rsyslog вставить строку:/var/log/dhcpd.logПерезапускаемся:# /etc/init.d/isc-dhcp-server restart # /etc/init.d/rsyslog restartТеперь, смотрим лог в /var/log/dhcpd.log        


http://habrahabr.ru/sandbox/45441/

Губарь Маргарита Александровна