Skip to content


NAT в linux

Исходные данные: есть роутер с двумя физическими интерфейсами – eth0 (внешний) и eth1 (внутренний). На внутреннем интерфейсе прибит ip-адрес 192.168.0.1/24. Для того, чтобы включить NAT (network address translation) в его упрощенном варианте, который называется маскардинг (встречается таже термин «маскарад») нужно сделать следующее:

  1. echo 1 > /proc/sys/net/ipv4/ip_forward
  2. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
  3. iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT
  4. iptables -I FORWARD -s 192.168.0.0/24 -j ACCEPT

Чтобы действие из п.1 не приходилось выполнять каждый раз после перезагрузки роутера, нужно поправить соответствующую опцию в /etc/sysctl.conf

Если требуется построить NAT в другую сторону, известный также как DNAT, то это можно сделать примерно так:

  1. iptables -t nat -A PREROUTING -p tcp -d 195.5.5.1 –dport 8182 -j DNAT –to-destination 10.10.10.18:80

Здесь 195.5.5.1 – внешний ip-адрес сервера, попытки установить соединение на 195.5.5.1 tcp-порт 8182 будут перенапрявляться на машину во внутренней сети с ip-адресом 10.10.10.18 на порт 80. При этом 10.10.10.18 должен быть directly-connected для сервера (то есть доступным для нашего сервера с DNAT-ом без использования промежуточных маршрутизаторов). А вот если это условие не выполняется, проброс портов можно сделать с помощью xinetd, создав в директории /etc/xinetd.d файл примерно такого содержания:

  1. service redir8182
  2. {
  3.  flags = REUSE
  4.  socket_type = stream
  5.  wait = no
  6.  user = nobody
  7.  group = nobody
  8.  protocol = tcp
  9.  disable = no
  10.  port = 8182
  11.  redirect = 10.10.10.18 80
  12. }

И в файл /etc/services добавить строку:

  1. redir8182 8182/tcp  # access to the internal web-server from the world

Если какая-то машинка за NAT-ом испытывает трудности с подключением к внешнему VPN-серверу и винда показывает ошибку №619, то стоит попробовать включить модуль ядра ip_nat_pptp на linux-роутере, который исполняет NAT:

  1. modprobe ip_nat_pptp

Похожие заметки:

  1. Порядок настройки свежеустановленной Linux
  2. Противодействие автоматическому подбору паролей
  3. Строим VPN-сервер на основе pptpd
  4. Дисковые квоты в Linux

Размещено в категории  *nix. Теги: , , , .

Комментариев: 0

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.