Muff's website forum

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

SMF - Just Installed!

Автор Тема: IPFW+NATD проброс портов изнутри локальной сети  (Прочитано 18295 раз)

Trennis

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 24
    • Просмотр профиля

Подскажите пожалуйста по такой проблеме:
Значит имеется шлюз FreeBSD IPFW+NATD, внешний белый ip (скажем 10.10.10.2)  там же Апач и всякого разного рода другие сервисы и локалка 192.168.0.0/24, + 2 сервера на которых крутятся разные сайты непосредственно внутри локальной сети. (192.168.0.100 и 192.168.0.97)

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

Пришлось настраивать Rinetd. Всё заработало, но уж больно меня скорость не устраивает, да и понять в чём проблема тоже хочется, чтобы реализовать это с помощью именно NATD.

Помогите разобраться
# cat /etc/rc.conf
defaultrouter="10.10.10.1"

ifconfig_ale0="192.168.0.4 netmask 255.255.255.0"

ifconfig_rl0="10.10.10.2 netmask 255.255.255.252"

named_enable="YES"
gateway_enable="YES"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-m -u -f /etc/natd.conf"

rinetd_enable="YES"

firewall_enable="YES"
firewall_type="/etc/rc.firewall"

# cat /etc/natd.conf
use_sockets             yes
same_ports              yes
unregistered_only       yes

#redirect_port  tcp     192.168.0.100:80 80 Сейчас проброшен Rinetd
redirect_port   tcp     192.168.0.100:7777 7777
#redirect_port  tcp     192.168.0.97:80 1212 Сейчас проброшен Rinetd

#ipfw list
00011 deny ip from table(1) to me
00111 allow ip from any to any via lo0
00211 deny ip from any to 127.0.0.0/8
00311 deny ip from 127.0.0.0/8 to any
00411 deny log logamount 50 ip from 192.168.0.0/24 to any in via rl0
00611 deny log logamount 50 ip from 10.10.10.2/30 to any in via ale0
00811 deny log logamount 50 ip from any to 10.0.0.0/8 in via rl0
00911 deny log logamount 50 ip from any to 172.16.0.0/12 in via rl0
01011 deny log logamount 50 ip from any to 192.168.0.0/16 in via rl0
01111 deny log logamount 50 ip from any to 0.0.0.0/8 in via rl0
01211 deny log logamount 50 ip from any to 169.254.0.0/16 in via rl0
01311 deny log logamount 50 ip from any to 224.0.0.0/4 in via rl0
01411 deny log logamount 50 ip from any to 240.0.0.0/4 in via rl0
01511 deny log logamount 50 icmp from any to any frag
01611 deny log logamount 50 icmp from any to 255.255.255.255 in via rl0
01711 deny log logamount 50 icmp from any to 255.255.255.255 out via rl0
01811 divert 8668 ip from 192.168.0.0/24 to any out via rl0
02011 divert 8668 ip from any to 10.10.10.2 in via rl0
02111 deny log logamount 50 ip from 10.0.0.0/8 to any out via rl0
02211 deny log logamount 50 ip from 172.16.0.0/12 to any out via rl0
02311 deny log logamount 50 ip from 192.168.0.0/16 to any out via rl0
02411 deny log logamount 50 ip from 0.0.0.0/8 to any out via rl0
02511 deny log logamount 50 ip from 169.254.0.0/16 to any out via rl0
02611 deny log logamount 50 ip from 224.0.0.0/4 to any out via rl0
02711 deny log logamount 50 ip from 240.0.0.0/4 to any out via rl0
02811 allow icmp from any to any icmptypes 0,8,11
02911 allow ip from any to 192.168.0.0/24 in via ale0
03011 allow ip from 192.168.0.0/24 to any out via ale0
03111 allow tcp from any to any established
03411 allow tcp from any to 192.168.0.100 dst-port 7777,80 in via rl0 setup
03511 allow tcp from any to 192.168.0.100 dst-port 7777,80 out via ale0 setup
03811 allow tcp from any to 192.168.0.97 dst-port 80 in via rl0 setup
03911 allow tcp from any to 192.168.0.97 dst-port 80 out via ale0 setup
04211 allow udp from any to 10.10.10.2 dst-port 53 in via rl0
04311 allow udp from 10.10.10.2 53 to any out via rl0
04411 allow udp from any 53 to 10.10.10.2 in via rl0
04511 allow udp from 10.10.10.2 to any dst-port 53 out via rl0
04611 allow udp from any to any dst-port 123 via rl0
04711 allow tcp from any to 10.10.10.2 dst-port 53 in via rl0 setup
04811 allow tcp from any to 10.10.10.2 dst-port 80 in via rl0 setup
04911 allow tcp from any to 10.10.10.2 dst-port 25 in via rl0 setup
05011 allow log logamount 50 tcp from any to 10.10.10.2 dst-port 22 in via rl0 setup
05111 deny log logamount 50 tcp from any to 10.10.10.2 in via rl0 setup
05211 allow tcp from 10.10.10.2 to any out via rl0 setup
05311 allow tcp from any to 10.10.10.2 in via ale0 setup
05411 allow tcp from 192.168.0.0/24 to any dst-port 5190 in via ale0 setup
05511 allow log logamount 50 ip from 192.168.0.0/24 to not 192.168.0.0/24 in via ale0 setup
05611 deny ip from any to any
65535 deny ip from any to any
« Последнее редактирование: Сентября 19, 2011, 03:41:58 pm от Trennis »
Записан

muff

  • Administrator
  • Долгожитель
  • ***
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 283
    • Просмотр профиля
    • IT, Network, Beer!
Re: IPFW+NATD проброс портов изнутри локальной сети
« Ответ #1 : Сентября 22, 2011, 01:35:29 pm »

Проблема состоит в том, что запрос приходит не с внешнего интерфейса, а с внутреннего. А natd "слушает" именно на внешнем интерфейсе. Тоесть, в случае, когда запрос приходит извне - редирект работает, а когда запрос идет изнутри сети - он корретно не обработается.

Чтобы не возиться с форвардами и редиректами, советую поднять локальный ДНС-сервер (см. http://muff.kiev.ua/content/bind-9-nastroika-dns-servera) и организовать поддержку ДНС-зон для определенных доменов, которые размещаются на внутренних серверах. Соответственно А-запись необходимо транслировать в локальную айпишку серверов. Внутрення сеть будет обращаться к этому ДНС-серверу и получать внутренние IP-адреса серверов, а весь Интернет будет обращаться к "реальному" IP-адресу.

Вот такая вот схема.

Еще рекомендации... По возможности сервера вынесите в отдельную подсеть - намного проще администрировать будет. Да и natd измените на что-нибудь более гибкое. Например НАТ-ить можно будет с помощью PF (http://muff.kiev.ua/content/nat-realizatsiya-s-pomoshchyu-pf). Тогда и НАТ можно будет "поднять" на нескольких интерфейсах.
Записан
Если нет ответа, то давайте подумаем...

Trennis

  • Пионер
  • *
  • Karma: 0
  • Оффлайн Оффлайн
  • Сообщений: 24
    • Просмотр профиля
Re: IPFW+NATD проброс портов изнутри локальной сети
« Ответ #2 : Сентября 26, 2011, 11:31:04 am »

Спасибо за совет, буду пытаться. :)
Записан
 

Страница сгенерирована за 0.622 секунд. Запросов: 30.