URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4504
[ Назад ]

Исходное сообщение
"Правильный двойной нат"

Отправлено FeNUMe , 08-Фев-10 21:11 
Вкратце задача: к роутеру на FreeNAS(сильно облегченная FreeBSD7.2)подключено 2 локальные сети и интернет. нужно обеспечить хождение пакетов между двумя локалками и раздачу интернета в одну из локалок. Так как роуты возможно прописать только в одной локалке то во вторую ходить приходится от имени роутера тоесть через нат.
на сервере такие интерфейсы
rl0 - смотрит во внутреннюю локалку 10.1.1.0/29
re0 - смотрит во внешнюю локалку 172.16.0.0/16 и 192.168.0.0/16
ng0 - смотрит в инет, создается mpd5 при коннекте PPPoE

Нужно натить ng0 на rl0 и re0 на rl0, при этом пакеты не должны ходить между re0 и ng0.
Сейчас использую такой конфиг, но он дырявый и не универсальный.
#!/bin/sh
FW="/sbin/ipfw -q"
IF_CN="re0"
IF_HOME="rl0"
IF_NET="ng0"
IP_CN="172.16.0.0/16, 192.168.0.0/16"
IP_HOME="10.1.1.0/29"
IP_NET=`ifconfig ng0 | grep inet | awk '{print $2}'`

#------------START NAT--------------------------
natd -s -m -n ${IF_NET} -redirect_port tcp 10.1.1.1:55555 55555
natd -s -m -p 8778 -n ${IF_CN}

#------------START RULLES--------------------------
${FW} -f flush
${FW} add divert 8778 ip from any to any via ${IF_CN}
${FW} add divert 8668 ip from any to any via ${IF_NET}
${FW} add pass all from me to any
${FW} add pass all from any to me
${FW} add pass all from any to any


Хотелосьбы отойти от использования айпи, чтобы все правила использовали только интерфейсы. Также интересует возможно ли это организовать с помощью KernelNAT(IPFW2 NAT)

также на одну из машин внутренней локалки нужно прокинуть порт для торрента.


Содержание

Сообщения в этом обсуждении
"Правильный двойной нат"
Отправлено FeNUMe , 10-Фев-10 09:19 
наверное еслиб можно было использовать адреса большой локалки для домашней - я бы тут не задавал вопросов.(подсеть в которую включен мой роутер, подключена как не удивительно тоже через роутер который проверяет доступ по маку) Вот поэтому мне нужно сделать именно то что я написал.
повторяю упрощенно есть 3 сетевых интерфейса ng0 re0 rl0, нужно обеспечить два ната первый с ng0 на rl0 второй с re0 на rl0 и запретить любой трафик с re0 на ng0. Помомему вполне конкретный вопрос, интересует возможно ли такое организовать(именно на основе интерфейсов) и каким софтом. В идеале привести пример правил.

А вы вместо того чтобы попытатся помочь решили повыделыватся и попридиратся к словам.

На счет маршрутов приведу пример
есть 2 сети: сеть А - диапазон 172.16.1.0/24 и сеть Б - диапазон 192.168.1.0/24, между ними роутер 192.168.1.1/172.16.1.1.
для того чтобы пакеты между сетями бегали нужно в сети А прописать
route add 172.16.1.0/24 192.168.1.1
а в сети Б
route add 192.168.1.0/24 172.16.1.1

Если будет прописан только один из этих маршрутов - НИХРЕНА не будет работать. Вот их я и называю встречными, хотя наверно правильнее былобы назвать обратными.



"Правильный двойной нат"
Отправлено y , 11-Мрт-10 01:21 
kldload pf.co
man pf.conf в секции NAT
делается 2мя строчками

"Правильный двойной нат"
Отправлено DenSha , 11-Фев-10 12:17 
>Вкратце задача: к роутеру на FreeNAS

Почему он?
>
>Хотелосьбы отойти от использования айпи, чтобы все правила использовали только интерфейсы.

ipfw действие протокол from интерфейс to интерфейс ? Фигня какая-то... Можно взглянуть, как это делается iptable-сом?

>Сейчас использую такой конфиг, но он дырявый и не универсальный.

Потому что "${FW} add pass all from any to any". Универсальный и ни разу не дырявый: "${FW} add deny all from any to any" первым и единственным правилом. Остальое недырявое, ИМХО, должно отвечать частным условиям. Такое предложение:

ipfw add divert 8668 tcp from any to me 55555 in via ${IF_NET}
ipfw add allow tcp from me to 10.1.1.1 55555 out via ${IF_HOME}
ipfw add divert 8668 tcp from 10.1.1.1 55555 to me in via ${IF_HOME}
ipfw add allow tcp from me 55555 to any out via ${IF_NET}

ipfw add divert 8778 ip from ${IP_HOME} to any in via ${IF_HOME}
ipfw add allow ip from me to ${IP_CN} out via ${IF_CN}
ipfw add allow ip from me to any out via ${IF_NET}
ipfw add divert 8778 ip from ${IP_CN} to me in via ${IF_CN}
ipfw add divert 8778 ip from any to me in via ${IF_NET}
ipfw add allow ip from any to ${IP_HOME} out via ${IF_HOME}

ipfw add deny all from any to any

Работоспособность не гарантирую. Не гуру. Просто вот так я вижу мир:)...


"Правильный двойной нат"
Отправлено Dmitry , 10-Мрт-10 18:36 

>на сервере такие интерфейсы
>ng0 - смотрит в инет, создается mpd5 при коннекте PPPoE
>
>Нужно натить ng0 на rl0 и re0 на rl0, при этом пакеты
>не должны ходить между re0 и ng0.

В mpd5.conf

set iface enable nat

Если версия mpd 5.5, то есть возможность управлять пробросом портов и протоколов


"Правильный двойной нат"
Отправлено Николай , 01-Апр-10 22:05 

>Если версия mpd 5.5, то есть возможность управлять пробросом портов и протоколов
>

set nat red-port proto alias_addr alias_port local_addr local_port [ remote_addr remote_port ]

Вот только она требует указать alias адрес, который может быть динамическим