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. /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
  3. /sbin/iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT
  4. /sbin/iptables -I FORWARD -s 192.168.0.0/24 -j ACCEPT

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

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

/sbin/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 файл примерно такого содержания:
service redir8182
{
flags = REUSE
socket_type = stream
wait = no
user = nobody
group = nobody
protocol = tcp
disable = no
port = 8182
redirect = 10.10.10.18 80
}

И в файл /etc/services добавить строку:
redir8182 8182/tcp # access to the internal web-server from the world

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

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

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

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

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

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

Some HTML is OK

(required)

(required, but never shared)

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