Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок
Модераторы: vadim64, terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Hoper
- рядовой
- Сообщения: 34
- Зарегистрирован: 2008-04-29 17:11:23
Непрочитанное сообщение
Hoper » 2012-08-08 11:06:53
Есть задача:
"пробросить порт из Internet на сервер внутрь DMZ"
В принцепи все тривиально, решений множество:
1. IPNAT:
Код: Выделить всё
rdr bge0 1.2.3.4/32 port 2202 -> 192.168.5.10 port 22 tcp
2. kernel NAT (IPFW)
Код: Выделить всё
${fwcmd} nat 123 config if bge0 same_ports redirect_port tcp 192.168.5.10:22 2202
НО: необходим не просто редирект, а чтобы на внутренней машинке
был виден внутренний IP шлюза а не реальный IP из нэта.
Intenet <---> 1.2.3.4-[FW]-192.168.5.1 <--------> 192.168.5.10-[SERVER]
Есть вариант
rinetd, но не нравиться в силу своей ограниченности (вроде нет поброса UDP), поведения под нагрузкой, и отзывы о нем...
.
Подскажите чем можно реализовать данную задачу??
P.S. Ядро собрано с опциями:
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options IPDIVERT
options DUMMYNET
options NETGRAPH
options IPFILTER
options IPFILTER_LOG
money is good servant but a bad master
Hoper
-
Хостинг HostFood.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/
-
Hoper
- рядовой
- Сообщения: 34
- Зарегистрирован: 2008-04-29 17:11:23
Непрочитанное сообщение
Hoper » 2012-08-14 15:23:47
Вот не первый раз уже - сам спросил - сам ответил.
/etc/rc.conf
Код: Выделить всё
firewall_enable="YES"
firewall_type="/etc/firewall"
/etc/sysctl.conf
ipfw.conf
Код: Выделить всё
#!/bin/sh
FwCMD="/sbin/ipfw" #
LanOut="bge0" #
IpOut="1.2.3.4" #
NetMaskOut="28"
LanIn="sk0" #
IpIn="192.168.5.1" #
NetMaskIn="26" #
${FwCMD} -f flush
${FwCMD} 100 add check-state
${FwCMD} 200 add allow ip from any to any via lo0
${FwCMD} 300 add deny ip from any to 127.0.0.0/8
${FwCMD} 310 add deny ip from 127.0.0.0/8 to any
# STOP privat NET
${FwCMD} 350 add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} 355 add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} 360 add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} 370 add deny ip from any to 0.0.0.0/8 in via ${LanOut}
${FwCMD} 380 add deny ip from any to 169.254.0.0/16 in via ${LanOut}
# STOP fregment ICMP
${FwCMD} 390 add deny icmp from any to any frag
# STOP brodcast OUT
${FwCMD} 400 add deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} 410 add deny log icmp from any to 255.255.255.255 out via ${LanOut}
# SSH in
${FwCMD} 620 add allow ip from any to ${IpIn} 2002 via ${LanIn}
${FwCMD} 630 add allow ip from ${IpIn} 2002 to any via ${LanIn}
# NAT 2
${FwCMD} nat 2 config log if ${LanIn} same_ports reset deny_in
${FwCMD} 820 add nat 2 log ip from any to any via ${LanIn}
# NAT 1
${FwCMD} nat 1 config log if ${LanOut} reset same_ports deny_in \
redirect_port tcp 192.168.5.10:22 2202 \
redirect_port tcp 192.168.5.10:80 80
${FwCMD} 900 add nat 1 log ip from any to any via ${LanOut}
${FwCMD} 65500 add deny all from any to any
Выдрано из -
http://www.lissyara.su/articles/freebsd ... /ipfw_nat/ Вариант 3
Применительно к моему случаю.
Трафик приходящий из интернета на 1.2.3.4:80(2202) пройдет через цепочку правил ipfw прохода IN до правила с номером 900 где попадет в первый экземпляр ната и будет демаскирован на основании статического правила (внешний_IP <-> 1.2.3.4 будет заменено на внешний_IP <-> 192.168.5.10). После этого трафик попадет в проход OUT фаервола и дойдет до правила 820 где попадет во второй экземпляр ната. Трафик будет маскирован (внешний_IP <-> 192.168.5.10 будет заменено на 192.168.5.1 <-> 192.168.5.10). После этого трафик выйдет из ната и будет передан на 192.168.5.10:80 (2202)
Заходим на 1.2.3.4
ssh 1.2.3.4 -p 2202
видим #w
Код: Выделить всё
3:10PM up 1:11, 1 user, load averages: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE WHAT
sss pts/0 192.168.5.1 2:02PM - w
Воткактотак.
может кому поможет.
money is good servant but a bad master
Hoper