Debian в качестве интернет-шлюза для LAN (NAT)

Jun 07, 2014 17:07


Итак едем дальше. Имеем наш сервер с Debian 7.5 на борту. В моём случае, eth0 - внешний интерфейс, т.е. через который наш шлюз получает интернет, а eth1 - интерфейс, которым шлюз будет отдавать интернет в нашу локальную сеть.


Сначала переведём наш сервер в режим роутера, т.е. включим форвардинг, т.е. шлюз, т.е. пропуск пакетов с одной карты сервера на другую. Для этого в файле /etc/sysctl.conf заменим строку net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1(в моём случае, я раскомментировал и заменил 0 на 1).

Чтобы применить новый конфиг, не перезагружаясь сделаем:
root# sysctl -p

Вариант включить форвард можно так, но работать будет только до перезагрузки:
root# sysctl -w net.ipv4.ip_forward="1"

Теперь расскажем нашему серверу, куда собственно направлять трафик, который прилетает на наш сервер, как на шлюз (вместо eth0 укажите тот интерфейс, которым шлюз смотрит в инет):
root# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ну и теперь нам нужно поправить файл /etc/rc.local, для того, чтобы сервер сразу после загрузки понимал, куда ему отправлять пакетики.
Приводим файл к примерно такому виду:
# Включаем nat:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Дефолтная строчка, её удалять нельзя:
exit 0

[Что такое NAT, плюсы и минусы.]
NAT (от англ. Network Address Translation - «преобразование сетевых адресов») - это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation.
Функционирование
Преобразование адресов методом NAT может производиться почти любым маршрутизирующим устройством - маршрутизатором, сервером доступа, межсетевым экраном. Наиболее популярным является SNAT, суть механизма которого состоит в замене адреса источника (англ. source) при прохождении пакета в одну сторону и обратной замене адреса назначения (англ. destination) в ответном пакете. Наряду с адресами источник/назначение могут также заменяться номера портов источника и назначения.
Помимо source NAT (предоставления пользователям локальной сети с внутренними адресами доступа к сети Интернет) часто применяется также destination NAT, когда обращения извне транслируются межсетевым экраном на сервер в локальной сети, имеющий внутренний адрес и потому недоступный извне сети непосредственно (без NAT).
Существует 3 базовых концепции трансляции адресов: статическая (Static Network Address Translation), динамическая (Dynamic Address Translation), маскарадная (NAPT, PAT).
Механизм NAT определён в RFC 1631, RFC 3022.
Преимущества
NAT выполняет три важных функции.
1. Позволяет сэкономить IP-адреса, транслируя несколько внутренних IP-адресов в один внешний публичный IP-адрес (или в несколько, но меньшим количеством, чем внутренних). По такому принципу построено большинство сетей в мире: на небольшой район домашней сети местного провайдера или на офис выделяется 1 «белый» (то есть внешний) IP-адрес, за которым работают и получают доступ вовне все «серые» (то есть внутренние) IP-адреса.
2. Позволяет предотвратить или ограничить обращение снаружи ко внутренним хостам, оставляя возможность обращения изнутри наружу. При инициации соединения изнутри сети создаётся трансляция. Ответные пакеты, поступающие снаружи, соответствуют созданной трансляции и поэтому пропускаются. Если для пакетов, поступающих снаружи, соответствующей трансляции не существует (а она может быть созданной при инициации соединения или статической), они не пропускаются.
3. Позволяет скрыть определённые внутренние сервисы внутренних хостов/серверов. По сути, выполняется та же указанная выше трансляция на определённый порт, но возможно подменить внутренний порт официально зарегистрированной службы (например, 80-й порт TCP (HTTP-сервер) на внешний 54055-й). Тем самым, снаружи, на внешнем IP-адресе после трансляции адресов на сайт (или форум) для осведомлённых посетителей можно будет попасть по адресу http://mysite.org:54055, но на внутреннем сервере, находящимся за NAT, он будет работать на обычном 80-м порту. Повышение безопасности и скрытие «непубличных» ресурсов.
Недостатки
Не все протоколы могут «преодолеть» NAT. Некоторые не в состоянии работать, если на пути между взаимодействующими хостами есть трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP-адресов, могут исправить этот недостаток, соответствующим образом заменяя IP-адреса не только в заголовках IP, но и на более высоких уровнях (например, в командах протокола FTP). См. Application-level gateway.
Из-за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.
DoS со стороны узла, осуществляющего NAT - если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS-атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT приводит к проблеме с подключением к серверу некоторых пользователей из-за превышения допустимой скорости подключений. Частичным решением проблемы является использование пула адресов (группы адресов), для которых осуществляется трансляция.
В некоторых случаях, необходимость в дополнительной настройке при работе с пиринговыми сетями и некоторыми другими программами (Battle.net-игры), в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.
NAT Traversal (прохождение или автонастройка NAT) - это набор возможностей, позволяющих сетевым приложениям определять, что они находятся за устройством, обеспечивающим NAT, узнавать внешний IP-адрес этого устройства и выполнять сопоставление портов для пересылки пакетов из внешнего порта NAT на внутренний порт, используемый приложением; все это выполняется автоматически, пользователю нет необходимости вручную настраивать сопоставления портов или вносить изменения в какие-либо другие параметры. Однако существуют меры предосторожности в доверии к таким приложениям - они получают обширный контроль над устройством, появляются потенциальные уязвимости.


IP адрес нашего сервера-шлюза должен быть указан в качестве шлюза в настройках сетевого подключения у клиентов либо если у вас всё серьёзно, то на коммутаторах либо на других серверах.

Если у вас не заработало, проверяем ещё раз настройки сетевых шлюза и ещё раз перечитываем мануалс, сверяемся со сделанным. Ещё как вариант может быть проблема в iptables. Чтобы попробовать решить - добавьте iptables -F в файл /etc/rc.local первой строчкой.
Вообще, работа с iptables в debian'e меня не приятно удивила, по сравнению с AltLinux и Fedora. Углубленным изучением этого вопроса я ещё не занимался, но скорее всего придётся.
Всё. Всем удачи в начинания, пошёл разбираться с Bind9.

lan, forward, debian, nat, linux

Previous post Next post
Up