Проброс портов средствами ipfw

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

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

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
FloID
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-04-18 13:03:24

Проброс портов средствами ipfw

Непрочитанное сообщение FloID » 2012-08-23 14:27:06

Доброго времени суток
Система: FreeBSD 8.2-RELEASE
Задача: Пробросить порт на Виндовую машину в сети, средствами ipfw.
Что было сделано:

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

${ipfw} add redirect_port tcp 192.168.3.1:4000 4000
пробывал прописывать в самом скрипте ipfw, при sh /etc/ipfw выдаёт ошибку

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

"ipfw: invalid action redirect_port"
Настройки
rc.conf:

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

defaultrouter="xxx.xxx.xxx.xxx"
ifconfig_re0="inet 192.168.3.250 netmask 255.255.255.0"
ifconfig_re1="inet aaa.aaa.aaa.aaa netmask 255.255.255.252"
apache22_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.conf"
sshd_enable="YES"
mysql_enable="YES"
sams_enable="YES"
squid_enable="YES"
natd_enable="YES"
natd_interface="re1"
natd_flags=""
dnsmasq_enable="YES"
gateway_enable="YES"
router_enable="YES"
IPFW:

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

ipfw="/sbin/ipfw -q"
natd="/sbin/natd"
lan_out="re1" # внешний интерфейс
lan_in="re0"  # внутрений интерфейс
ip_out="xxx.xxx.xxx.xxx."
ip_in="192.168.3.250"
lan="192.168.3.0/24"

${ipfw} -q -f flush
${ipfw} add check-state
${ipfw} add allow all from any to any via lo0

# Riderect
${ipfw} add redirect_port tcp 192.168.3.1:4000 4000
#${ipfw} nat 123 config log if re1 reset same_ports deny_in redirect_port tcp 192.168.3.1:4000 4000
#${ipfw} add nat ip from any to any out xmit re1
#${ipfw} add nat ip from any to any in recv re1
#${ipfw} nat 1 config log if re1 reset same_ports deny_in redirect_port tcp 192.168.3.1:4000 4000

#NAT
#${ipfw} add fwd 127.0.0.1,3128 tcp from ${lan} to any http via ${lan_in}
${ipfw} add divert natd ip from ${lan} to any out via ${lan_out}
${ipfw} add divert natd ip from any to ${ip_out} in via ${lan_out}
${ipfw} add allow all from any to any via ${lan_in}
${ipfw} add allow icmp from any to any

# Проброс портов
${ipfw} add fwd 192.168.3.1,4000 tcp from any to me dst-port 4000 via ${lan_out}
${ipfw} add fwd 192.168.3.1,4000 udp from any to me dst-port 4000 via re1
подскажите куда копать, заранее спасибо.
Последний раз редактировалось f_andrey 2012-08-23 15:10:55, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения, и оформляйте его по человечески.

Хостинговая компания 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/

ChihPih
ст. прапорщик
Сообщения: 566
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: Проброс портов средствами ipfw

Непрочитанное сообщение ChihPih » 2012-08-23 14:37:47

Синтаксис неверный. Надо так

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

ipfw nat 1 config .....
www.info-x.org - информационный ресурс о ОС FreeBSD.

FloID
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-04-18 13:03:24

Re: Проброс портов средствами ipfw

Непрочитанное сообщение FloID » 2012-08-23 15:09:02

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

ipfw nat 1 config .....
И так тоже пробывал, ругается на синтаксис

ChihPih
ст. прапорщик
Сообщения: 566
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: Проброс портов средствами ipfw

Непрочитанное сообщение ChihPih » 2012-08-23 15:49:12

Ну так а в мане посмотреть как правильно надо:

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

ipfw nat 1 config if re1 reset same_ports deny_in redirect_port tcp 192.168.3.1:4000 4000
www.info-x.org - информационный ресурс о ОС FreeBSD.

FloID
проходил мимо
Сообщения: 8
Зарегистрирован: 2012-04-18 13:03:24

Re: Проброс портов средствами ipfw

Непрочитанное сообщение FloID » 2012-08-24 7:39:31

А вот этим правилом нельзя пробросить ?

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

redirect_addr localIP publicIP
В манне как раз таки имено так и указано.

ChihPih
ст. прапорщик
Сообщения: 566
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: Проброс портов средствами ipfw

Непрочитанное сообщение ChihPih » 2012-08-24 8:42:56

Можно, тока он будет все запросы (на любой порт) перекидывать.
www.info-x.org - информационный ресурс о ОС FreeBSD.

k0matoznik
проходил мимо
Сообщения: 9
Зарегистрирован: 2012-04-14 20:39:52

Re: Проброс портов средствами ipfw

Непрочитанное сообщение k0matoznik » 2014-04-12 14:43:14

ребята, у меня почти такаяже проблема, только все еще мудренее,
2 влана(1 и 2 )
Фря шлюз с адресом 192.168.20.1 у нее 2 сетевые карты, одна смотрит в локальную сеть 192.168.20.0-255
вторая карта смотрит на 2 влана. там 172.16.0.0 и 172.17.0.0
надо так раскадать компы из локалки, чтобы одна половина (скажем 50шт) имела доступ к 172.16.0.0, а другая половина компов (50шт) имела доступ только к 172.17.0.0.
Естественно что сети перекликаться не должны, что каждый комп должен видеть только свою сеть, а другую не должен и тд.
Фаервол закрытый, я добился того чтобы разные компы видели только позволеные им сети.
Но вот если скажем в сети 172.16.0.0 есть DChub, то я понятия не имею как из сети 192.168.20.0 разрешить тачкам качать с этого ДЦ хаба, у пользователей из сети 172.16.0.0.
Пробросами иил правилами я не допираю.
tcpdump выдает это

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

07:44:45.354373 IP 192.168.20.10.vmodem > 172.16.0.20.rmt: Flags [.], ack 427, win 32554, options [nop,nop,TS val 3808683 ecr 11561212], length 0
07:44:45.757224 IP 172.16.0.20.rmt > 192.168.20.10.vmodem: Flags [P.], seq 427:467, ack 1, win 258, options [nop,nop,TS val 11561264 ecr 3808683], length 40
07:44:45.757939 IP 192.168.20.10.3478 > 172.20.1.54.5646: Flags [S], seq 4034504522, win 65535, options [mss 1460,nop,wscale 1,nop,nop,TS val 0 ecr 0,nop,nop,sackOK], length 0
07:44:45.862075 IP 192.168.20.10.vmodem > 172.16.0.20.rmt: Flags [.], ack 467, win 32534, options [nop,nop,TS val 3808688 ecr 11561264], length 0
07:44:48.331524 IP 172.16.0.20.rmt > 192.168.20.10.vmodem: Flags [P.], seq 467:545, ack 1, win 258, options [nop,nop,TS val 11561521 ecr 3808688], length 78
07:44:48.502877 IP 192.168.20.10.vmodem > 172.16.0.20.rmt: Flags [.], ack 545, win 32495, options [nop,nop,TS val 3808715 ecr 11561521], length 0
07:44:48.604440 IP 192.168.20.10.3478 > 172.20.1.54.5646: Flags [S], seq 4034504522, win 65535, options [mss 1460,nop,wscale 1,nop,nop,TS val 0 ecr 0,nop,nop,sackOK], length 0
я вижу что тачка с ип адресом 192.168.20.10 ломитсья на 172.16.0.20(это сам адрес хаба ДЦ), и обламывается, потом 172.16.0.20 обращается к 192.168.20.10 и тоже обламывается.
а цифры рядом с ип адресами я так понимаю порты, но там разброс просто огроменный с 3к до 37к. я ведь немогу все открыть все.
Правила ipfw

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

#!/bin/sh
ipfw='/sbin/ipfw -q'
local='192.168.20.0/24'
worknet='172.17.0.0/20'
usernet='172.16.0.0/24'

#Sbros vseh pravil
${ipfw} flush
${ipfw} pipe flush
${ipfw} queue flush

#logamount
${ipfw} add 1 log any to any

#Razreshaem vse po local intface
${ipfw} add 10 allow ip from any to any via lo0
${ipfw} add 11 deny ip from any to 127.0.0.0/8
${ipfw} add 12 deny ip from 127.0.0.0/8 to any
${ipfw} add 13 allow ip from me to any keep-state

#Ping
${ipfw} add 210 allow icmp from any to me icmptypes 0,3,5,8

#rab mesta
${ipfw} add 20 allow all from 192.168.20.5 to ${worknet}
${ipfw} add 20 allow all from ${worknet} to 192.168.20.5

#tssh & DC
${ipfw} add 30 allow all from 192.168.20.10 to ${usernet}
${ipfw} add 30 allow all from ${usernet} to 192.168.20.10
${ipfw} add 30 allow all from ${usernet} to 192.168.20.10 dst-port 35500-36000 keep-state
${ipfw} add 30 allow all from 192.168.20.10 to ${usernet} dst-port 35500-36000 keep-state
#${ipfw} add 31 redirect_port tcp 

#Podkluchenie SSH
${ipfw} add 250 allow tcp from ${worknet} to 172.17.15.252 dst-port 22 keep-state
${ipfw} add 250 allow tcp from ${usernet} to 172.16.3.254 dst-port 22 keep-state
${ipfw} add 250 allow tcp from ${local} to 192.168.20.1 dst-port 22 keep-state
помогите кто чем может.

Аватара пользователя
FenX
ст. прапорщик
Сообщения: 513
Зарегистрирован: 2008-04-23 17:46:53
Откуда: Moscow
Контактная информация:

Re: Проброс портов средствами ipfw

Непрочитанное сообщение FenX » 2014-04-13 22:27:29

тут во многом в диапазон портов хаба упирается...
я с дц давно дела не имел, попробуй глянуть,
есть ли в конфигах сервера и клиента что-то на эту тему
и отплясывать уже от этих настроек.
твоя задача открыть диапазон портов на вход/выход
и пустить трафик по этим портам

k0matoznik
проходил мимо
Сообщения: 9
Зарегистрирован: 2012-04-14 20:39:52

Re: Проброс портов средствами ipfw

Непрочитанное сообщение k0matoznik » 2014-04-14 2:50:32

Ок, их можно просто открыть на вход\выход или все же нат переброс портов делать? или так и так можно сделать?
можете как для дурака обьяснить что делает нат?
я читал мануалы и видимо непонимаю тем языком которым там написано.
Я понимаю что правилами надо принимать пакеты, с определенных портов, потом перенаправлять на определенный адрес и на определенные порты

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

ipfw nat 1 config if stge1 log same_ports unreg_only reset redirect_port udp 172.16.2.1:57941 57941 redirect_port tcp 172.16.2.1:57941 57941
ipfw nat 2 config if ng0 log same_ports unreg_only reset redirect_port udp 172.16.2.1:57941 57941 redirect_port tcp 172.16.2.1:57941 57941
обьясните пожалуйста эти 2 правила.
это ведь и есть нат?
Вообще через нат реально, сделать так чтобы я был во внешней сети, а остальные тачки были за шлюзом, за натом, за фаерволом и я мог бы к ним по RDP, по TeamVeawer подключаться, и обращаться тогда на какие ип? Уменя допусти 172.16.0.22, а у них 192.168.20.хххх-255, так и пробовать на их адреса цепляться?
И плюс ко всему этому еще сделать чтобы все что сидит за шлюзом имело доступ к разным подсетям, к 3 если точнее. Комуто в 1 подсеть, комуто во 2 подсеть, а комуто в 3 подсеть?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35179
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Проброс портов средствами ipfw

Непрочитанное сообщение Alex Keda » 2014-04-20 11:14:41

не проще через rinetd просунуть и не париться?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
FenX
ст. прапорщик
Сообщения: 513
Зарегистрирован: 2008-04-23 17:46:53
Откуда: Moscow
Контактная информация:

Re: Проброс портов средствами ipfw

Непрочитанное сообщение FenX » 2014-04-21 12:48:31

нат нужен для того, чтобы машины из локалки могли соваться в интернет и, соответственно,
из инета можно было соваться на эти же машины (через проброс портов)
если твоя машина для обеих подсетей (юзверьской и с хабом)
служит шлюзом - нат для того, чтобы они видели друг дружку не нужен,
достаточно разрешить хождение трафика между ними.