auto lo
iface lo inet loopback
Что такое iptables(netfilter)?
С пакетами в ядре работает netfilter, который управляется утилитой iptables. Поскольку более раскрученным брэндом является iptables, то в обиходе netfilter упоминают гораздо реже.
Разработчики же вообще заявляют, что модули: netfilter, ip_tables, nf_conntrack и NAT-подсистема вместе образуют фреймворк. И данный фреймворк, встроенный в ядро Linux, и рулит фильтрацией пакетов.
У простого пользователя от всего этого пухнет голова, поэтому все это хозяйство будем обозначать в дальнейшем iptables
Основные возможности iptables-netfilter
Фильтрация пакетов с контролем принадлежности пакета к определенному соединению(stateful packet filtering)
Сетевая трансляция адресов - NAT
Модификация заголовков пакетов
Что можно построить при помощи iptables-netfilter?
Межсетевой экран (он же брэндмауэр, он же firewall, он же файрволл)
Дать общий доступ в WAN группе компьютеров при наличии даже одного адреса, используя NAT
Создавать прозрачные прокси при помощи NAT
В связке с tc и iproute2 создавать продвинутые роутеры и задавать приоритет различным видам траффика
Установка и удаление iptables
sudo iptables -L показывает текущие правила в таблицах iptables
Если iptables не установлен, то система пожалуется нам:
sudo: iptables: command not found
Таким образом, одной командой мы можем проверить, установлен ли iptables и, если он установлен, то просмотреть текущие правила
sudo apt-get install iptables установка iptables
sudo apt-get remove iptables удалить iptables
По умолчанию iptables установлен в дистрибутивах Debian и Ubuntu
Важно!!
Включаем форвардинг IP-пакетов:
в файле /etc/sysctl.conf нужно раскомментировать(вписать, если ее почему-то нет) строчку:
net.ipv4.ip_forward=1
Затем выполняем команду /etc/init.d/networking restart
Файл конфигурации и команды iptables
/etc/iptables.up.rules - стандартный файл с правилам для iptables в Ubuntu 10.04. Данные правила не загружаются автоматически при старте системы. Загрузить их можно вручную при помощи команды
iptables-restore:
sudo iptables-restore < /etc/iptables.up.rules
Хранить и загружать правила можно из любого другого нашего файла.
iptables-save выводят текущие(применяемые netfilter-ом) правила и группирует цепочки правил по таблицам. Изначально вывод идет в stdout (консоль). Можно перенаправить вывод в нужный нам файл:
sudo iptables-save > /etc/iptables.backup.rules.12-12-2010 - сохраним текущую конфигурацию правил iptables в файле
iptables.backup.rules.12-12-2010
Никто не запрещает нам сохранять правила в файл конфигурации по умолчанию (/etc/iptables.up.rules):
sudo iptables-save > /etc/iptables.up.rules
Автоматическая активация правил при старте системы
Способ 1:
В файл /etc/network/interfaces
post-up iptables-restore < /etc/iptables.up.rules
...
вносим "post-up iptables-restore < /etc/iptables.up.rules" после iface lo
При старте системы правила из файла iptables.up.rules загрузятся в iptables-netfilter
Способ 2:
В файл /etc/init.d/networking
.....
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
#dad-begin
iptables-restore < /etc/iptables.up.rules
#dad-end
[ -x /sbin/ifup ] || exit 0
......
вносим строчку "iptables-restore < /etc/iptables.up.rules".
Принципиальной разницы между двумя способами нет. Способ 2 позволяет активировать правила из файла /etc/iptables.up.rules при рестарте сетевых интерфейсов: sudo /etc/init.d/networking restart
Изменение активных правил iptables
Редактируем файл конфигурации /etc/iptables.up.rules После чего выполняем команду
sudo iptables-restore < /etc/iptables.up.rules
Также для активации новых правил можно использовать sudo /etc/init.d/networking restart, если iptables-restore < /etc/iptables.up.rules внесено в /etc/init.d/networking (Способ 2, см. выше)
Подгружаем модули в iptables
Отслеживание соединений для сложных протоколов ftp, irc, tftp, amanda требует загрузки соответствующих модулей. Не все они грузятся по умолчанию.
nf_conntrack_ftp
nf_conntrack_irc
nf_conntrack_tftp
nf_conntrack_amanda
Если используется технология трансляции сетевых адресов, то для отслеживания соединений сложных протоколов также требуются модули:
nf_nat_ftp
nf_nat_irc
nf_nat_tftp
nf_nat_amanda
Проверить, загружены модули или нет можно командой lsmod |grep «подстрока»:
lsmod |grep nf
lsmod |grep ip
sudo modprobe -l |grep /netfilter - список доступны модулей к загрузке для iptables
sudo modprobe <имя модуля> - загружаем недостающий модуль
Я подгружаю нижеследующие модули при помощи команд в файле /etc/init.d/networking
.....
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
#dad-begin
iptables-restore < /etc/iptables.up.rules
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
modprobe xt_limit
modprobe xt_state
modprobe ipt_LOG
#dad-end
[ -x /sbin/ifup ] || exit 0
….....
Модуль xt_state в Ubuntu 10.04 вроде бы загружается сам(не мешает проверить).
Разное
/proc/net/nf_conntrack - файл, в котором можно посмотреть текущие активные соединения
Прозрачный прокси для локальной сети
iptables -A PREROUTING -p tcp -m tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128 «прозрачный прокси» для локальной сети при соответствующей настройке прокси-сервера (squid)
Ссылки по теме:
http://www.netfilter.org/ - ресурс разработчиков
http://www.frozentux.net/documents/iptables-tutorial/ - обучающий материал на английском
http://posix.ru/network/iptables/ - материал на русском языке
http://ru.wikipedia.org/wiki/Netfilter
http://ru.wikipedia.org/wiki/Iptables
http://habrahabr.ru/blogs/linux/100919/ - Маршрутизатор с 2-мя WAN-линками
http://shorewall.net/
Бесклассовая адресация
Бесклассовая адресация используется в обозначении адресов источника и приемника в про iptables
http://ru.wikipedia.org/wiki/VLSM