Jump to content
Калькуляторы

проблема с NAT редирект порта!

ab6576d10625.jpg

В качестве маршрутизатора вступает FreeBSD.

1) Other PC1 - ip 10.0.0.2/30

2) Other PC2 - ip 10.1.2.2/30

3) Other PC3 - ip 10.2.2.2/30

все IP адреса отмаршрутизированны провайдером на 10.0.28.2/24 (интерфейс vlan5 FreeBSD сервера)

 

WEB сервер ip из подсетки 192.168.0.0/24

FTP сервер ip из подсетки 192.168.0.0/24

И локальные клиенты тоже принадлежат подсетке 192.168.0.0/24 (vlan3)

 

FreeBSD еще раздает интернет локальным пользователям (Internet, VLAN1)

 

Нат на FreeBSD запущен таким образом:

 

freebsd# ps ax|grep natd

91912 ?? Ss 0:04.40 natd -a xxx.xxx.xxx.xxx -p 8668

где xxx.xxx.xxx.xxx адрес внешнего интерфейса (предоставленный другим провайдером)

Сейчас локальные уже имеют доступ на внешку (т.е на интернет)

 

У клиентов Other PC1-3 было настроенно программа на ftp://10.0.28.2 так как и в качестве FTP сервера вступал FreeBSD.

Теперь для FTP выделен новый сервер и соответственно "Other PC1-3" не имеют доступа к нему.

Задача состоит в том чтоб Other PC1-3 имели доступ к FTP серверу не меняя никаких настроек в своей программе.

Делаю таким образом:

 

freebsd# natd -redirect_port tcp 192.168.0.100:21 21

Loading /lib/libalias_cuseeme.so

Loading /lib/libalias_ftp.so

Loading /lib/libalias_irc.so

Loading /lib/libalias_nbt.so

Loading /lib/libalias_pptp.so

Loading /lib/libalias_skinny.so

Loading /lib/libalias_smedia.so

natd: instance default: aliasing address not given

 

Также и для WEB:

freebsd# natd -redirect_port tcp 192.168.0.111:80 81

Loading /lib/libalias_cuseeme.so

Loading /lib/libalias_ftp.so

Loading /lib/libalias_irc.so

Loading /lib/libalias_nbt.so

Loading /lib/libalias_pptp.so

Loading /lib/libalias_skinny.so

Loading /lib/libalias_smedia.so

natd: instance default: aliasing address not given

 

NAT как я говорил уже запущен для раздачи интернета:

freebsd# ps ax|grep natd

91912 ?? Ss 0:05.36 natd -a xxx.xxx.xxx.xxx -p 8668

 

ipfw sh:

10000 103058 8136962 divert 8668 ip from 192.168.0.0/24 to any out via vlan1

10100 328274 373747289 divert 8668 ip from any to xxx.xxx.xxx.xxx in via vlan1

 

Что делать и где копать, подскажите где я допустил ошибку или что я делаю неправильно?

 

P.S. Конечно можно им IP сказать нового сервера, но им еще нужно прописать до него маршруты. А сами эти удаленные клиенты находятся очень далеко и сидят там простые операторы которому час нужно объяснять. И ктому-же их количество очень много.

Edited by fetch001

Share this post


Link to post
Share on other sites

Что делать и где копать, подскажите где я допустил ошибку или что я делаю неправильно?

 

Вы натите только наружу.

А вам надо обычный порт форвардинг для локальной сети.

Например, используя net/portfwd

Share this post


Link to post
Share on other sites

Откройте для себя pf, там вам и нат и форвард и фаервол.

 

Либо fwd в правилах ipfw.

 

 

Share this post


Link to post
Share on other sites

Я давно для редиректа портов использую rinetd. Настройки там -простейшие

Share this post


Link to post
Share on other sites

Что делать и где копать, подскажите где я допустил ошибку или что я делаю неправильно?

 

Вы натите только наружу.

А вам надо обычный порт форвардинг для локальной сети.

Например, используя net/portfwd

 

для начала попробовал Ваш вариант:

 

freebsd# more /usr/local/etc/ftp.cfg
/*
 ftp.cfg

 $Id: ftp.cfg,v 1.1.1.1 2001/05/15 00:24:48 evertonm Exp $
*/

tcp {
       21
       { => 192.168.0.100:ftp }
}

 

 

freebsd# /usr/local/sbin/portfwd -c /usr/local/etc/ftp.cfg
freebsd# ps ax | grep port
10554  ??  Ss     0:00.00 /usr/local/sbin/portfwd -c /usr/local/etc/ftp.cfg
10555  ??  S      0:00.00 /usr/local/sbin/portfwd -c /usr/local/etc/ftp.cfg
10557   1  S+     0:00.00 grep port

 

freebsd# sockstat |grep port
root     portfwd    10555 3  dgram  -> /var/run/logpriv
root     portfwd    10555 4  tcp4   *:21                  *:*
root     portfwd    10554 3  dgram  -> /var/run/logpriv

 

при соединении на 21 порт с какой либо программой (программы для работы с FTP серверами)

 

Выдает ошибку:

500 Invalid PORT command

 

00010 308 17460 allow tcp from me to any setup

00020 866 418400 allow tcp from any to any dst-port 20,21,20000-29999

00400 1247 78330 deny ip from any to 127.0.0.0/8

00500 1 84 deny ip from 127.0.0.0/8 to any

00600 48 1944 deny tcp from any 135,137-139 to any

00700 46680 3904441 deny udp from any 135,137-139 to any

00750 4156 533862 allow tcp from any to me dst-port 3128

10000 12968 798270 divert 8668 ip from 172.16.16.0/24 to any out via vlan1

10100 45025 51199826 divert 8668 ip from any to xx.xx.xx.xx in via vlan1

10400 66597 24735364 allow ip from any to any

10450 146 10091 allow tcp from any 20,21 to any

10500 411 27325 deny log logamount 100 ip from any to any

65535 9 686 deny ip from any to any

 

Тот-же ошибочное сообщение выдает и с rinetd.

Edited by fetch001

Share this post


Link to post
Share on other sites

Если я не ошибаюсь .. для ftp нужно прокидывать группу портов 21, 20 и диапазон например 1024-2000 (указывается и на самом сервере ftp)

Share this post


Link to post
Share on other sites
Я давно для редиректа портов использую rinetd. Настройки там -простейшие

 

В pf:

 

rdr inet proto tcp from any to (self) port 3389 -> $int_rdp_server

 

pass in quick inet proto tcp from any to $int_rdp_server port 3389 flags S/SA synproxy state

 

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

 

 

Share this post


Link to post
Share on other sites

(Offtop к предедущей схеме)

Проблема так и не решается тогда такой вопрос:

Для теста поставил себе IP адрес 192.168.10.253, Server FreeBSD ip 192.168.10.113, Windows Server ip 192.168.10.100

Правила FreeBSD

00060    9470     733853 allow tcp from any to any dst-port 22
00300       0          0 allow ip from any to any via lo
00500       1         84 deny ip from 127.0.0.0/8 to any
00550    1885     118783 allow ip from any to 172.16.24.1
00550     126      13048 allow ip from 172.16.24.1 to any
00750   40347    3495168 allow tcp from any to me dst-port 3128
00800 2312869 2781006110 allow ip from 172.16.16.0/24 to 192.168.10.100
00900 1722421  867613038 allow ip from 192.168.10.100 to 172.16.16.0/24
10000   13303     819325 divert 8668 ip from 172.16.16.0/24 to any out via vlan2
10100   99508  120352680 divert 8668 ip from any to 172.16.24.113 in via vlan2
10200  233929   42635926 allow ip from 172.16.16.0/24 to any
10300   41742   56449032 allow ip from any to 172.16.16.0/24
10451   87402   74305204 allow ip from any to any
65535       9        686 deny ip from any to any

 

Перенаправление порта:

root     rinetd     38734 4  tcp4   172.16.16.1:20        *:*
root     rinetd     38734 5  tcp4   172.16.16.1:21        *:*
root     rinetd     38734 6  tcp4   172.16.16.1:81        *:*
root     rinetd     38734 7  tcp4   192.168.10.113:81     *:*
root     rinetd     38734 8  tcp4   192.168.10.113:21     *:*
root     rinetd     38734 9  tcp4   192.168.10.113:20     *:*
root     rinetd     38734 10 tcp4   192.168.10.113:21     192.168.10.253:3199
root     rinetd     38734 11 tcp4   192.168.10.113:37451  192.168.10.100:21

 

Кусочек дампа на FreeBSD при обращение моего IP на 192.168.10.113 по 21 порту:

freebsd# tcpdump -i vlan2 -n|grep 192.168.10.100
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan2, link-type EN10MB (Ethernet), capture size 96 bytes
13:30:57.800431 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 2982247719, win 8326, options [nop,nop,TS val 79997948 ecr 51808], length 5
13:30:57.800639 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 5, win 64561, options [nop,nop,TS val 51909 ecr 79997948], length 31
13:30:57.801969 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 32, win 8326, options [nop,nop,TS val 79997950 ecr 51909], length 28
13:30:57.802129 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 33, win 64533, options [nop,nop,TS val 51909 ecr 79997950], length 27
13:30:57.906080 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [.], ack 59, win 8326, options [nop,nop,TS val 79998050 ecr 51909], length 0
13:31:00.100191 ARP, Request who-has 192.168.10.100 tell 192.168.10.103, length 46
13:31:00.319406 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 59, win 8326, options [nop,nop,TS val 80000367 ecr 51909], length 5
13:31:00.319588 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 38, win 64528, options [nop,nop,TS val 51934 ecr 80000367], length 31
13:31:00.321878 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 90, win 8326, options [nop,nop,TS val 80000369 ecr 51934], length 28
13:31:00.322033 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 66, win 64500, options [nop,nop,TS val 51934 ecr 80000369], length 27
13:31:00.425576 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [.], ack 117, win 8326, options [nop,nop,TS val 80000469 ecr 51934], length 0
13:31:01.934627 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 117, win 8326, options [nop,nop,TS val 80001929 ecr 51934], length 5
13:31:01.934817 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 71, win 64495, options [nop,nop,TS val 51950 ecr 80001929], length 31
13:31:01.937207 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 148, win 8326, options [nop,nop,TS val 80001931 ecr 51950], length 28
13:31:01.937354 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 99, win 64467, options [nop,nop,TS val 51950 ecr 80001931], length 27
13:31:02.039021 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [.], ack 175, win 8326, options [nop,nop,TS val 80002031 ecr 51950], length 0
13:31:03.147577 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 175, win 8326, options [nop,nop,TS val 80003098 ecr 51950], length 5
13:31:03.147740 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 104, win 64462, options [nop,nop,TS val 51962 ecr 80003098], length 31
13:31:03.150042 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [P.], ack 206, win 8326, options [nop,nop,TS val 80003100 ecr 51962], length 28
13:31:03.150195 IP 192.168.10.100.21 > 192.168.10.113.37451: Flags [P.], ack 132, win 64434, options [nop,nop,TS val 51962 ecr 80003100], length 27
13:31:03.253634 IP 192.168.10.113.37451 > 192.168.10.100.21: Flags [.], ack 233, win 8326, options [nop,nop,TS val 80003200 ecr 51962], length 0

 

freebsd# tcpdump -i vlan2 -n | grep 192.168.10.253
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan2, link-type EN10MB (Ethernet), capture size 96 bytes
13:38:17.944418 IP 192.168.10.113.22 > 192.168.10.253.2662: Flags [P.], ack 4093483279, win 65535, length 196
13:38:17.944694 IP 192.168.10.253.2662 > 192.168.10.113.22: Flags [.], ack 196, win 64603, length 0
13:38:20.049088 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 3707215829, win 65245, length 5
13:38:20.049396 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 5, win 65535, length 31
13:38:20.052320 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 32, win 65214, length 27
13:38:20.052556 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 32, win 65535, length 27
13:38:20.177288 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [.], ack 59, win 65187, length 0
13:38:21.162373 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 59, win 65187, length 5
13:38:21.162685 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 37, win 65535, length 31
13:38:21.164929 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 90, win 65156, length 27
13:38:21.165135 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 64, win 65535, length 27
13:38:21.283803 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [.], ack 117, win 65129, length 0
13:38:22.274721 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 117, win 65129, length 5
13:38:22.275231 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 69, win 65535, length 31
13:38:22.277437 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 148, win 65098, length 27
13:38:22.277665 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 96, win 65535, length 27
13:38:22.390325 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [.], ack 175, win 65071, length 0
13:38:22.883216 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 175, win 65071, length 5
13:38:22.883515 IP 192.168.10.113.21 > 192.168.10.253.3199: Flags [P.], ack 101, win 65535, length 31
13:38:22.885695 IP 192.168.10.253.3199 > 192.168.10.113.21: Flags [P.], ack 206, win 65040, length 27

 

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

Edited by fetch001

Share this post


Link to post
Share on other sites

Для теста поставил себе IP адрес 192.168.10.253, Server FreeBSD ip 192.168.10.113, Windows Server ip 192.168.10.100

Они все в одной подсети.

Или пусть ходят напрямую или на фряхе сооружайте NAT для этого.

 

ftp server <--- freebsd [portforwarding] <----  ftp client
ftp server ---> freebsd [NAT]            ---->  ftp client

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this