- Утилита для загрузки правил
из/в файлы, это позволяет правилам пережить перезапуск системы:~# apt-get install iptables-persistent
Файлы, где хранятся правила (в них менять ничего не надо!!!):
IPv4 : /etc/iptables/rules.v4
IPv6 : /etc/iptables/rules.v6
Сохраняем правила в файлы:
~# iptables-save > /etc/iptables/rules.v4
~# ip6tables-save > /etc/iptables/rules.v6
Восстановление правил из файла:~# iptables-restore < /etc/iptables/rules.v4
~# ip6tables-restore < /etc/iptables/rules.v6
- iptables
Посмотреть активные правила~# iptables --list-rules
Пример правил# Закрываем изначально ВСЁ iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # разрешаем loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # разрешаем исходящие на интерфейсе провайдера, для поднятия vpn iptables -A OUTPUT -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # разрешаем все для локальной сети iptables -A INPUT -i eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT # доступ в интернет, разрешаем исходящие соединения iptables -A OUTPUT -o ppp0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # разрешаем подключение извне к transmission iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 9091 -j ACCEPT # разрешаем на всех интерфейсах уже установленные соединения iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # отгоняем ущербных -A INPUT -m state --state INVALID -j DROP -A FORWARD -m state --state INVALID -j DROP
Данные правила разрешают доступ к серверу из локальной сети, но в интернет можно попасть только с самого сервера.
- NAT
Настраиваем доступ в интернет из локальной сети через сервер.
Разрешаем маршрутизацию трафика.~# echo 1 > /proc/sys/net/ipv4/ip_forward
Запоминаем, чтобы работало после перезагрузки, в /etc/sysctl.conf ищем и раскомментируем строчку:net.ipv4.ip_forward=1
Добавляем строчки в iptables, разрешаем транзит пакетов из внутренней сети во внешнюю и обратноiptables -A FORWARD -i eth1 -o ppp0 -s 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -i ppp0 -o eth1 -d 192.168.2.0/24 -j ACCEPT
Так как у нас vpn-интерфейс с динамическим ip, то применяем MASQUERADE. Я написал скриптик /etc/ppp/ip-up.d/nat:#!/bin/sh iptables -t nat -F iptables -A POSTROUTING -o ppp0 -t nat -j MASQUERADE
Он будет срабатывать каждый раз, когда поднимется vpn-соединение.
Статья опубликована: 2016-02-12 21:00:35
Последние правки: 2018-03-11 20:18:07
Роутер из Debian. Настраиваем брандмауер. NAT.
Во всех примерах используются два интерфейса:
eth0 - внешний, через него подключены к провайдеру
ppp0 - vpn соединение, через него ходим в интернет
eth1 - внутренняя сеть, 192.168.2.0/24