Вкратце задача: к роутеру на 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)также на одну из машин внутренней локалки нужно прокинуть порт для торрента.
наверное еслиб можно было использовать адреса большой локалки для домашней - я бы тут не задавал вопросов.(подсеть в которую включен мой роутер, подключена как не удивительно тоже через роутер который проверяет доступ по маку) Вот поэтому мне нужно сделать именно то что я написал.
повторяю упрощенно есть 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Если будет прописан только один из этих маршрутов - НИХРЕНА не будет работать. Вот их я и называю встречными, хотя наверно правильнее былобы назвать обратными.
kldload pf.co
man pf.conf в секции NAT
делается 2мя строчками
>Вкратце задача: к роутеру на 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
Работоспособность не гарантирую. Не гуру. Просто вот так я вижу мир:)...
>на сервере такие интерфейсы
>ng0 - смотрит в инет, создается mpd5 при коннекте PPPoE
>
>Нужно натить ng0 на rl0 и re0 на rl0, при этом пакеты
>не должны ходить между re0 и ng0.В mpd5.conf
set iface enable nat
Если версия mpd 5.5, то есть возможность управлять пробросом портов и протоколов
>Если версия mpd 5.5, то есть возможность управлять пробросом портов и протоколов
>set nat red-port proto alias_addr alias_port local_addr local_port [ remote_addr remote_port ]
Вот только она требует указать alias адрес, который может быть динамическим