FreeBSD 9.0 и проброс портов во внутрь сети

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
underground
рядовой
Сообщения: 45
Зарегистрирован: 2014-01-30 13:41:40

FreeBSD 9.0 и проброс портов во внутрь сети

Непрочитанное сообщение underground » 2014-01-30 14:02:38

Всем доброго времени суток!!!
Начну тему наверно все-таки с извинения за уже избитый вопрос в интернете: «Почему у меня не работает проброс портов?»… И все таки он у меня не работает...

Вкратце о конфигурации сети:
Есть шлюз (компьютер) под управлением Windows Serwer 2008 с двумя сетевыми картами. На одной карте статический белый IP, смотрящий в мир, на второй карте 192.168.0.100 с маской 255.255.255.0 Имеется локальная сеть 192.168.0. с кучей компьютеров (далее сеть №1). К этой сети подключен компьютер с FreeBSD 9.0 (на котором и собираюсь пробрасывать порты) с двумя сетевыми картами re1 с IP 192.168.0.210 смотрящей в сеть №1 (типа внешняя) и re2 с IP 192.168.20.210 которая смотрит в другую сеть 192.168.20. (далее сеть №2) с небольшой группой компьютеров, которые прекрасно выходят в интернет. В сети №2 есть компьютер с IP-адресом 192.168.20.2, который получает по DHCP с привязкой к MAC-адресу (в общем это у него постоянный IP), на котором поднят WEB-сервер.
Задача: пробросить порты, чтобы клиенты из сети №1 заходили по ссылке в браузере http://192.168.0.210:8080 и попадали на WEB-сервер из сети №2.

Ниже привожу примеры файлов конфигурации. Также хочу заметить, что пробовал конфигурации с http://www.xakep.ru/post/54483/ , http://mdex-nn.ru/page/probros-portov-v ... w-nat.html , http://how-it.ru/public/root/232-freebs ... z_nat.html , http://likeunix.ru/freebsd-ipfw-natd/, частично с http://freebsd.3dn.ru/publ/redirekt_por ... 18-1-0-994 , а также с http://forum.lissyara.su/viewtopic.php?f=8&t=22695 любезно предоставленным vlaryk, естественно со свими данными, и еще очень много-много страниц из Рунета, посвещенных этой теме, но, к сожалению, у меня ничего не получилось.

В качестве эксперимента пробовал файл rc.conf со строчкой firewall_type=”OPEN” дабы исключить какую бы то ни было ошибку в правилах IPFW, но это тоже не помогло.

Подскажите пожалуйста, что я делаю не так и что и где нужно дописать?

Операционная система FreeBSD 9.0

Файл rc.conf

Код: Выделить всё

hostname=”FreeBSD”
ifconfog_re1=” inet 192.168.0.210 netmask 255.255.255.0”
ifconfog_re2=” inet 192.168.20.210 netmask 255.255.255.0”
gateway_enable=”YES”
firewall_enable=”YES”
firewall_script=”/etc/ipfw.rules”
natd_enable=”YES”
natd_interface=”re1”
natd_flags=”-f /etc/natd.conf
defaultrouter=”192.168.0.100”
sshd_enable=”YES”
dhcpd_enable=”YES”
dhcpd_ interface=re2
nmbd_ enable=”YES”
smbd_ enable=”YES”
dumpdev=”AUTO”
Файл ipfw.rules
(здесь убраны правила редиректа портов т.к. все равно не работают.)

Код: Выделить всё

ipfw -q -f flush

LanOut=”re1”
LanIn=”re2”
IpOut=”192.168.0.210”
IpIn=”192.168.20.210”
dns1="217.12.81.129"
dns2="217.12.81.131"
cmd="ipfw -q add"
ks="keep-state"
skip="skipto 800"

$cmd 005 allow all from any to any via $LanIn
$cmd 010 allow all from any to any via lo0
$cmd 014 divert natd ip from any to any in via $LanOut
$cmd 015 check-state

$cmd 020 $skip tcp from any to 217.12.81.129 53 out via $LanOut setup $ks
$cmd 021 $skip tcp from any to 217.12.81.131 53 out via $LanOut setup $ks
$cmd 040 $skip tcp from any to any 80 out via $LanOut setup $ks
$cmd 050 $skip tcp from any to any 443 out via $LanOut setup $ks
$cmd 060 $skip tcp from any to any 25 out via $LanOut setup $ks
$cmd 061 $skip tcp from any to any 110 out via $LanOut setup $ks
$cmd 070 $skip tcp from me to any out via $LanOut setup $ks uid root
$cmd 080 $skip icmp from any to any out via $LanOut $ks
$cmd 090 $skip tcp from any to any 37 out via $LanOut setup $ks
$cmd 100 $skip tcp from any to any 119 out via $LanOut setup $ks
$cmd 110 $skip tcp from any to any 22 out via $LanOut setup $ks
$cmd 120 $skip tcp from any to any 43 out via $LanOut setup $ks
$cmd 130 $skip udp from any to any 123 out via $LanOut $ks


$cmd 301 deny all from 172.16.0.0/12   to any in via $LanOut
$cmd 302 deny all from 10.0.0.0/8      to any in via $LanOut
$cmd 303 deny all from 127.0.0.0/8     to any in via $LanOut
$cmd 304 deny all from 0.0.0.0/8       to any in via $LanOut
$cmd 305 deny all from 169.254.0.0/16  to any in via $LanOut
$cmd 306 deny all from 192.0.2.0/24    to any in via $LanOut
$cmd 307 deny all from 204.152.64.0/23 to any in via $LanOut
$cmd 308 deny all from 224.0.0.0/3     to any in via $LanOut
$cmd 315 deny tcp from any to any 113 in via $LanOut
$cmd 320 deny tcp from any to any 137 in via $LanOut
$cmd 321 deny tcp from any to any 138 in via $LanOut
$cmd 322 deny tcp from any to any 139 in via $LanOut
$cmd 323 deny tcp from any to any 81  in via $LanOut
$cmd 330 deny all from any to any frag in via $LanOut
$cmd 332 deny tcp from any to any established in via $LanOut
$cmd 370 allow tcp from any to me 80 in via $LanOut setup limit src-addr 2
$cmd 380 allow tcp from any to me 22 in via $LanOut setup limit src-addr 2
$cmd 399 deny icmp from any to any in via $LanOut

$cmd 800 divert natd ip from any to any out via $LanOut
$cmd 801 allow ip from any to any

$cmd 999 deny log all from any to any

Файл natd.conf

Код: Выделить всё

use_sockets yes
same_ports yes
unregistered_only yes
interface re1 (внутренний сетевой интерфейс)
redirect_port tcp 192.168.20.2:80 8080

Подозреваю, что приписка в источние http://how-it.ru/public/root/232-freebs ... z_nat.html говоряшая: «P.S. Распространенная ошибка - пробовать рабоать с пробросом портов изнутри локальной сети - т.е. с серых адресов. Работать не будет - ибо трафик должен прилетать из интернета на сетевую карту, смотрящую во-вне. Поэтому изнутри Вашей же сети проброс портов банально не проверить.», Но ведь у меня получается физически две разные подсети пусть даже и серые. Или FreeBSD пусть даже и 9.0 обязательно нужен «белый» IP-адрес на внешнем интерфейсе? Тогда возникает вопрос: а как FreeBSD различает белый адрес от серого? Ведь может же это быть «белый» адрес за серой сетью?

Помогите пожалуйста, кто чем сможет!
Заранее всем благодарен за любые Ваши советы и примеры!
С уважением
Илья

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

immortal
мл. сержант
Сообщения: 109
Зарегистрирован: 2011-11-10 6:11:34

Re: FreeBSD 9.0 и проброс портов во внутрь сети

Непрочитанное сообщение immortal » 2014-02-04 6:56:40

попробуйте не натом, а сервисом inetd:
в rc.conf:

Код: Выделить всё

inetd_enable="YES"
в inetd.conf: (в конце файла одной строкой)

Код: Выделить всё

8080          stream tcp      nowait          nobody  /usr/bin/nc     /usr/bin/nc      192.168.0.210   8080
В файрволе:

Код: Выделить всё

$cmd  pass ip from any to me 8080

underground
рядовой
Сообщения: 45
Зарегистрирован: 2014-01-30 13:41:40

Re: FreeBSD 9.0 и проброс портов во внутрь сети

Непрочитанное сообщение underground » 2014-02-04 9:54:09

Огромное Вам спасибо за совет, уважаемый immortal
Попробовал, как Вы посоветовали, но у меня ничего не получилось... Пробовал также в файле inetd.conf написать:

Код: Выделить всё

8080          stream tcp      nowait          nobody  /usr/bin/nc     /usr/bin/nc      192.168.20.2   80
(192.168.20.2 - IP-адрес компьютера с сервисом, на который нужно сделать доступ по 80 пору)
а в правилах файрвола до правила ната:

Код: Выделить всё

$cmd 011 allow all from 192.168.0.210 8181 to 192.168.20.2 80
И это тоже не сработало...
В любом случае еще раз спасибо Вам, что не оставили без внимания мою проблему.
С уважением
Илья

immortal
мл. сержант
Сообщения: 109
Зарегистрирован: 2011-11-10 6:11:34

Re: FreeBSD 9.0 и проброс портов во внутрь сети

Непрочитанное сообщение immortal » 2014-02-04 11:27:16

У Вас фря стоит внутри сети, перед шлюзом... И как по мне уж шипко накрутили файрвол (прям как шлюз внутри сети :smile: )...
Попробуйте пока пойти от минимума для разбора полета:
в natd.conf: (интерфейс re1 указывать не надо, он у Вас указан в rc.conf)

Код: Выделить всё

unregistered_only yes
same_ports yes
use_sockets yes
redirect_port tcp 192.168.20.2:80 8080
убедитесь что нат стартонул нормально, должно быть что то подобное:

Код: Выделить всё

mail2# ps ax | grep natd
 2109  ??  Ss    48:45,56 /sbin/natd -m -u -f /etc/natd.conf -n tun0
35156  p0  S+     0:00,00 grep natd
Поменяйте значение в sysctl: (чтоб пакеты пропускались дальше за правила с натом)

Код: Выделить всё

mail2# sysctl net.inet.ip.fw.one_pass=0
И в файрволе попробуйте такую констркцию:

Код: Выделить всё

LanOut=”re1”
LanIn=”re2”
IpOut=”192.168.0.210”
IpIn=”192.168.20.210”
dns1="217.12.81.129"
dns2="217.12.81.131"
cmd="/sbin/ipfw -q  "
ks="keep-state"

$cmd -f flush
$cmd add check-state

${cmd} add allow ip from any to any via lo0
${cmd} add deny ip from any to 127.0.0.0/8
${cmd} add deny ip from 127.0.0.0/8 to any

${fw} add allow ip from any to any via ${LanIn}
${cmd} divert natd ip from any to any

Дальше пойдут Ваши правила (Только без deny пока добавьте правила)
И среди них:
add pass tcp from any to 192.168.20.2 8080 in recv ${LanOut}

underground
рядовой
Сообщения: 45
Зарегистрирован: 2014-01-30 13:41:40

Re: FreeBSD 9.0 и проброс портов во внутрь сети

Непрочитанное сообщение underground » 2014-02-04 13:48:10

Еще раз хочу поблагодарить Вас, уважаемый immortal за Вашу помощь!
Фря стоит внутри сети, т.к. я не могу ее ставить первым шлюзом на белый IP из=за того, что будут проблемы с обеспечением интернета офису, что просто недопустимо... Вот и приходиться извращаться внутри серых сетей...
Сделал все, как Вы сказали... Правила файрвола загрузились не все... Поставил в rc.conf тип файрвола "OPEN" тоже ноль...
Вот вывод команды grep natd:

Код: Выделить всё

ps ax | grep natd
  1814 ?? Ss 0:00.85/sbin/natd -f /etc/natd.conf -n re1
34383 v4 S+ 0:00.00 grep natd
Я уже поднял rinetd в соответствии с инструкциями на http://it-student.com.ua/freebsd/tips/r ... inetd.html и http://shop.nativepc.ru/content/27--ssh-freebsd при все том же типе файрвола "OPEN" и тоже полная тишина...
Если у Вас будут еще какие-нибудь предложения - буду безмерно Вам благодарен!
С уважением
Илья

underground
рядовой
Сообщения: 45
Зарегистрирован: 2014-01-30 13:41:40

Re: FreeBSD 9.0 и проброс портов во внутрь сети

Непрочитанное сообщение underground » 2014-02-05 14:37:55

Всем доброго времени суток!!!
Я нашел новую проблему... Оказывается это не я не могу порты пробросить... Оказывается это что-то глушит WEB-сервис...
В общем проблема такая:
Если я переключаю компьютер 192.168.20.2 с WEB-сервисом из сети №2 в сеть №1 он получает IP 192.168.0.21, на его WEB-сервис можно зайти без проблем с любого компьютера - все работает в пределах сети №1 как и должно быть... Но как только я его перевожу за шлюз с FreeBSD в сеть №2 с IP 192.168.20.2 то на его WEB-сервис невозможно зайти ни с одного компьютера сети №2 (ну и сети №1 естественно)...
Подскажите пожалуйста люди добрые, что же я наворотил то такого? Я ни разу с таким не сталкивался...

С уважением
Илья