Страница 1 из 1

Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 5:56:18
immortal
Всем привет!!
Я уже поднимал тему про проброс портов, но опрометчиво закрыл ее, думал разобрался...
Задача стандартная: Нужно пробросить порт (для примера хотяб 3389) на машину локальной сети. Проброс нужно освоить через NAТ. Но вот каким именно запутался окончательно!!!! Такая каша в голове!
Ребят помогите распутаться плиз и выбрать что то одно.
Вобщем пробовал почти все:) :
natd - настраивал по мануалам (оч много читал по настройкам). Рыл тырнет, форумы, статьи Лиса. Не получилось... Вроде все поднимается, но по tcpdump пакеты идут в одну сторону и все (Вне зависимости правил в фаере)
ipnat - Тоже самое, не получилось и пакеты также только в одну сторону.
Ядерный nat - Получилось:) Проброс работает, но с другими правилами в фаере полный сумбур. В зависимости расположений правил (ниже или выше nat'a) не работет либо сам проброс, либо на сервисы на фре (типа ftp и т.д.) зайти нельзя!!
Конкретно для меня хотелось бы юзать natd (конфиг отдельный от фаера и правила вроде интуитивно понятные). И хотелось бы начать разбор полета с него.

P.S возможно не понимаю сам меанизм работы nat'a и фаера. Но в голове реально щас каша, а время поджимает. Можно пожалуйста по порядку начать?? и не ругайте сильно плиз нуба пока во freebsd
FreeBSD 8.2
Если нужны какие конфы, пишите буду выкладывать.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 7:16:38
sadchok
Для начала уберите из конфига фаера nat 2

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 7:23:43
immortal
sadchok писал(а):Для начала уберите из конфига фаера nat 2
Убрал уже давно ;-) Тогда просто не работает редирект порта... Попутный вопрос:
Есть смысл попробовать PF?? (надеюсь голова не взорвется)... Или все-таки допинывать то что начал?
(Честно говоря уже по ходу из крайности в крайность кидаюсь :( )

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 7:40:04
sadchok
immortal писал(а): Попутный вопрос:
Есть смысл попробовать PF?? (надеюсь голова не взорвется)... Или все-таки допинывать то что начал?
(Честно говоря уже по ходу из крайности в крайность кидаюсь :( )
С PF не работал, потому помочь не могу.
А по поводу IPFW, давайте конфиг и вывод ipfw show.
Ну и все таки есть смысл начать от простого к сложному,

Думаю вам больше подойдет пример 1.
Сделайте резервную копию своего конфига.
Возьмите конфиг из примера.(поменяв интерфейсы и адреса на свои)
Если заработало.
Постепенно добавляйте в него остальное.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 8:01:57
immortal
sadchok Как я понял Вы меня толкаете на ядерный nat?? С него по порядку начнем? Кидаю тады его настройки?

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 8:38:25
immortal
Начну с конфигов...
/etc/rc.conf:

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

## Net Settings ##
gateway_enable="YES"
hostname="proxy.domain.ru"
ifconfig_re0="inet 192.168.1.222 netmask 255.255.255.0"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="bwc"
firewall_enable="YES"
firewall_script="/etc/list.ipfw"
firewall_logging="YES"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"
icmp_log_redirect="YES"
/etc/sysctl.conf

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

net.inet.ip.fw.one_pass: 1
/etc/list.ipfw:

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

FwCMD="/sbin/ipfw -q  "
LanOut="tun0"                           #Интерфейс созданный подключением PPPoE
LanIn="re0"                               #Интерфейс смотрящий в лок сеть
IpOut="81.18.81.18"               #Внешний стат IP 
IpIn="192.168.1.222"                 #Внутренний IP фри
NetMask="24"
NetIn="192.168.1.0"

${FwCMD} -f flush

#loopback
        ${FwCMD} 100 add allow all from any to any via lo0
        ${FwCMD} 101 add deny all from any to 127.0.0.0/8
        ${FwCMD} 102 add deny all from 127.0.0.0/8 to any

#       ${FwCMD} 110 add check-state




## SSH
        ${FwCMD} 120 add allow tcp from any to any 22 setup keep-state

###############################################################################################################
########################################## Firewall_Begin #####################################################

        ${FwCMD} add 1040 allow ip from any to any via re0

        ${FwCMD} nat 1 config log if tun0 reset same_ports deny_in \
                redirect_port tcp 192.168.1.102:3389 3389 \
                redirect_port udp 192.168.1.20:80 80

        ${FwCMD} add 10130 nat 1 ip from any to any via tun0
        ${FwCMD} add 10150 pass tcp from any to ${IpOut} 3389 via ${LanOut}
        ${FwCMD} add 10140 pass tcp from any to 192.168.1.102 3389 via ${LanOut}
        ${FwCMD} add 10140 pass tcp from any to 192.168.1.102 3389 via ${LanIn}
Соединение с инетом через PPPoE:

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

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 1c:6f:65:85:e9:ec
        inet 192.168.1.222 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3808<VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:02:44:71:89:9a
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
        options=80000<LINKSTATE>
        inet 81.18.81.18 --> 2.2.2.3 netmask 0xffffffff
        Opened by PID 497
Попытка подключиться из вне на порт 3389:

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

[14:33]/home/immortal/>ipfw show
00100   0     0 allow ip from any to any via lo0
00101   0     0 deny ip from any to 127.0.0.0/8
00102   0     0 deny ip from 127.0.0.0/8 to any
00120   0     0 allow tcp from any to any dst-port 22 setup keep-state
01040 324 34964 allow ip from any to any via re0
10130   3   144 nat 1 ip from any to any via tun0
10150   0     0 allow tcp from any to 81.18.118.195 dst-port 3389 via tun0
10160   0     0 allow tcp from any to 192.168.1.102 dst-port 3389 via tun0
10170   0     0 allow tcp from any to 192.168.1.102 dst-port 3389 via re0
65535   0     0 deny ip from any to any

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

[14:19]/home/immortal/>tcpdump -i tun0 tcp port 3389
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type NULL (BSD loopback), capture size 96 bytes
14:20:12.379132 IP 81.18.115.84.2700 > 81.18.81.18.rdp: Flags [S], seq 3266011509, win 16384, options [mss 1360,nop,nop,sackOK], length 0
14:20:15.418094 IP 81.18.115.84.2700 > 81.18.81.18.rdp: Flags [S], seq 3266011509, win 16384, options [mss 1360,nop,nop,sackOK], length 0
14:20:21.432593 IP 81.18.115.84.2700 > 81.18.81.18.rdp: Flags [S], seq 3266011509, win 16384, options [mss 1360,nop,nop,sackOK], length 0

tcpdump -i tun0 tcp port 3389
Не дал результата...
Как видно пакеты прошли через 2 правила и до внутренней сетки (re0) вообще не дошли

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 9:28:56
tom.cat
У меня в pf.conf выглядет это следующим образом:

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

ext_if="tun0"   # replace with actual external interface name i.e., dc0
int_if="em1"    # replace with actual internal interface name i.e., dc1
tcp_services="{ 23, 22, 2120, 8021, 49152:65535, 19114, 57400, 1413, 3389, 21 }"
server="192.168.1.10"
rdr on $ext_if proto tcp from any to ($ext_if) port 3389 -> $server port 3389
pass in on $ext_if inet proto tcp from any to $server port $tcp_services flags S/SA keep state
pass out keep state
Ну и rc.conf

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

ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="pppoe"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 9:36:59
immortal
Я с PF пока ваще не дружу, но в качестве примера попробую

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 9:46:08
tom.cat
Я не полный конфиг кинул, а те строки касающиеся RDP.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 10:28:33
sadchok
я так понимаю вы пытаетесь пробросить RDP сессию через два шлюза.
причем один из них не знает о существовании второго.
Потому и не может промаршрутизировать ответный пакет.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 10:33:09
immortal
Почему через два?? через 1 свой или я чего то не догоняю...

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 10:35:32
immortal
Вобщем как дело, есть локальная сеть, я настроил шлюз в сети с адресом локальным 192.168.1.222, вторая сетевуха смотрит в инет с адресом 81.18.81.18... На шлюзе пишу правила проброса по порту 3389
Вот и подключаюсь rdp клиентом к 81.18.81.18 и должен попадать на терминальный сервер внутри локалки.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 10:48:32
sadchok
В таком случае на терминальном сервере шлюзом по умолчанию нужно прописать ваш шлюз.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 10:57:13
immortal
Щас попробую

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 10:59:52
immortal
sadchok писал(а):В таком случае на терминальном сервере шлюзом по умолчанию нужно прописать ваш шлюз.
Во:) Уже лучше!!! Обмен на внутреннем интерфейсе пошел в обе стороны, но на внешнем по прежнему только в одну...

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:13:50
Mobilesfinks
openvpn рекомендую настроить.
Сам с проборосами портов не сильно мучился, и на free и на linux всё получалось легко (после достижения определенного уровня опыта )) и набивания шишек).
Если хочешь ходить на машину по RDP, то ИМХО лучше VPN и через него уже коннектится. Тем более OpenVPN настраивается очень легко. В интернете много хаутушек, и в последнее время появились статьи с объяснением принципов работы.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:15:24
sadchok
еще раз конфиг IPFW в студию и вывод ipfw show и tcpdump

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:18:32
sadchok
Mobilesfinks писал(а):openvpn рекомендую настроить.
Сам с проборосами портов не сильно мучился, и на free и на linux всё получалось легко (после достижения определенного уровня опыта )) и набивания шишек).
Если хочешь ходить на машину по RDP, то ИМХО лучше VPN и через него уже коннектится. Тем более OpenVPN настраивается очень легко. В интернете много хаутушек, и в последнее время появились статьи с объяснением принципов работы.
кроме RDP у него еще и http (хотя если он тоже сугубо для себя то openvpn рулит)
Ну или ssh туннель.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:24:33
immortal
Все получилось!!!!! :Yahoo!: sadchok спасибо огромное Вам за помощь!! Дело было действительно в шлюзе на клиентах к кторым идет проброс... Офигеть и из-за этой мелочи 3 недели коту под хвост!!!
Вобщем конфиги выше правильные, нужен был шлюз на клиентах.
sadchok, выражаю Вам еще раз огромную благодарность!! :drinks:

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:35:37
sadchok
для RDP все таки думаю стоит VPN или SSH туннель настроить.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:43:54
immortal
Я еще до этого не добрался, но я думаю скоро эта тема появиться в этой ветке :)

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 11:48:19
Mobilesfinks
sadchok писал(а):для RDP все таки думаю стоит VPN или SSH туннель настроить.
Да, наверное ещё более просто будет через SSH пустить.

Re: Война с пробросом порта продолжается!!!

Добавлено: 2011-12-19 12:26:30
sadchok
Если использовать RDP клиента (типа remmina) который сам умеет поднимать ssh туннель то и настраивать нечего.