Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   [решено] Radmin через port mapping (http://forum.oszone.net/showthread.php?t=89431)

Vygov 30-08-2007 14:34 635684

Radmin через port mapping
 
Ситуация: с удаленной машины требуется подключиться к машине, находящейся за шлюзом. Пошел путем перенаправления портов.
Серверная часть на локальной машине установлена, на удаленной установлен клиент. В ipfw.rules добавлены следующие строчки:

$cmd add allow tcp from any to any 4899
$cmd add allow tcp from any 4899 to any
$cmd add 100 fwd 192.168.111.88,4899 tcp from any to me 4899

Разрешается движение по порту 4899, потом делается перенаправление с внешнего интерфейса, на локальный адрес.
При подключении выскакивает окно "Нельзя подсоединиться к серверу". Пробовал также с одной локальной машины через внешний интерфейс подключиться к другой.
Та же история. Где я ошибся?

Telepuzik 31-08-2007 13:26 636307

Приведите вывод команды ipfw show после попытки соединения из внешней сети.

Vygov 31-08-2007 18:11 636478

Код:

00100    381    36780 allow tcp from any to me 22
00200    327    71892 allow tcp from me 22 to any
00300 447743 281927891 divert 8668 ip from any to any via rl0
00400      0        0 allow tcp from any to any 4899
00500      0        0 allow tcp from any 4899 to any
00550      2        96 fwd 192.168.111.88,4899 tcp from any to x.x.x.x 4899
00600 202060  27726609 allow ip from x.x.x.x to any out xmit rl0
00700  12845  4766161 allow ip from any to x.x.x.x in recv rl0
00800 232838 249435121 allow ip from any to 192.168.111.0/24 via rl0
00900  11172  1412726 allow ip from 192.168.111.0/24 to 192.168.111.1 in recv rxp0
01000  17018  19987781 allow ip from 192.168.111.1 to 192.168.111.0/24 out xmit rxp0
01100 202758  26273464 allow ip from 192.168.111.0/24 to any in recv rxp0
01200 232837 249433621 allow ip from any to 192.168.111.0/24 out xmit rxp0
01300  13664  18638436 allow ip from any to any via so0
01400      0        0 deny ip from any to 127.0.0.0/8
01500      0        0 deny ip from 127.0.0.0/8 to any
65535  2005    643194 deny ip from any to any


Vygov 05-09-2007 14:08 638583

Возможно, проблема в Nat? Если не ошибаюсь, при рабочем Nat немного другой конфиг идет?

Telepuzik 05-09-2007 15:47 638666

Попробуйте прописать в natd.conf:
redirect_port tcp <внешний ip> 4899 4899
и закоментируйте правило с fwd.

Vygov 05-09-2007 18:42 638749

Цитата:

Цитата Telepuzik
Попробуйте прописать в natd.conf:
redirect_port tcp <внешний ip> 4899 4899
и закоментируйте правило с fwd. »

Я не создавал natd.conf, NAT сконфигурирован в rc.conf через natd_flags="-n rl0 -u -m"
В команжной строке задаю:

# natd -redirect_port tcp x.x.x.x:4899 4899

Ошибка - "aliasing adress not given".
Пробую так:

#natd -redirect_port tcp x.x.x.x:4899 192.168.111.9:4899

Ошибка - "aliasing adress not given".

Кстати, ip, имхо, нужно внутренний задавать.

Telepuzik 05-09-2007 19:20 638768

Сорри ошибся, конечно ip сервака где установлен Radmin.

Vygov 05-09-2007 19:29 638773

Ошибка та же. Alias adress - При чем он здесь?

Telepuzik 06-09-2007 15:52 639229

Попробуйте вот так:
natd -s -m -u -n rl0 -redirect_port 192.168.111.9:4899 4899

Vygov 06-09-2007 18:18 639300

Выдает ошибку: natd: Unable to bind divert socket.: Address already in use
Вот мой ipfw.rules:

ipfw.rules
#!/bin/sh
cmd=/sbin/ipfw
ln="192.168.111.0/24"
inet_if_ip="x.x.x.x"
inet_if="rl0"
local_if="fxp0"
local_if_ip="192.168.111.1"
$cmd -q -f flush

$cmd add allow all from any to any via lo0

$cmd add divert natd ip from any to any via $inet_if

$cmd add allow tcp from any to any 4899
$cmd add allow tcp from any 4899 to any
$cmd add allow tcp from any to 192.168.111.9 4899 in recv rl0
$cmd add allow tcp from any to 192.168.111.9 4899 out via fxp0

$cmd add allow ip from $inet_if_ip to any out xmit $inet_if
$cmd add allow ip from any to $inet_if_ip in recv $inet_if
$cmd add allow ip from any to $ln via $inet_if

$cmd add allow ip from $ln to $local_if_ip in recv $local_if
$cmd add allow ip from $local_if_ip to $ln out xmit $local_if

$cmd add allow ip from $ln to any in recv $local_if
$cmd add allow ip from any to $ln out xmit $local_if

$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

Telepuzik 06-09-2007 19:21 639319

Завершите процесс natd и запустите команду что я приводил в предыдущем сообщении. Либо пропишите в rc.conf: natd_flags="-s -n rl0 -u -m -redirect_port 192.168.111.9:4899 4899" и перезапустите natd.

Vygov 07-09-2007 15:15 639722

С этими настройками Nat не работает.

Telepuzik 18-09-2007 14:43 645593

Мой рабочий пример для трафика RDP порт 3389:
rc.conf:
natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf"
natd_program="/sbin/natd"

natd.conf:
same_ports yes
use_sockets yes
redirect_port tcp 192.168.0.190:3389 3389

Правила ipfw(rc.firewall):
ipfw='/sbin/ipfw -q'

${ipfw} flush
${ipfw} add allow all from any to any via lo0
${ipfw} add 10000 divert natd all from any to any via rl0
${ipfw} add allow tcp from any to 192.168.0.190 3389 in recv rl0
${ipfw} add allow tcp from any to 192.168.0.190 3389 out via rl1
..............

rl1 - внутренний интерфейс.
Так все работает и NAT и redirect портов.

Vygov 20-09-2007 16:12 646685

Хм... Все сделал, как описано выше, создал natd.conf. Систему перегрузил полностью. Пишет - "невозможно подсоединиться к серверу".

Telepuzik 21-09-2007 10:22 647050

Странно. Есть еще два параметра у меня в rc.conf (gateway_enable="YES",firewall_type="open") но врядли они влияют. Попробуйте следующие:
1. Оставьте на время тестирования 2 правила ipfw:

${ipfw} add divert natd all from any to any via <номер вашего интерфейса>
${ipfw} add allow ip from any to any

2. Запустите tcpdump на внешнем и внутреннем интерфесах и попробуйте соединиться через Radmin, увидите где пропадают пакеты:
tcpdump -i <внешний интерфейс> dst port 4489
tcpdump -i <внутренний интерфейс> dst port 4489


И приведите ipconfig /all с машинки где установлен сервер RAdmin.

Vygov 21-09-2007 10:51 647076

Вот мой ipfw.rules:

Код:

ipfw.rules     
#!/bin/sh
cmd=/sbin/ipfw
ln="192.168.111.0/24"
inet_if_ip="x.x.x.x"
inet_if="rl0"
local_if="fxp0"
local_if_ip="192.168.111.1"
$cmd -q -f flush

$cmd add allow all from any to any via lo0

$cmd add divert natd ip from any to any via $inet_if

$cmd add allow tcp from any to any 4899
$cmd add allow tcp from any 4899 to any
$cmd add allow tcp from any to 192.168.111.9 4899 in recv xl0
$cmd add allow tcp from any to 192.168.111.9 4899 out via fxp0
#$cmd add 550 fwd 192.168.111.9,4899 tcp from any to x.x.x.x 4899

$cmd add allow ip from $inet_if_ip to any out xmit $inet_if
$cmd add allow ip from any to $inet_if_ip in recv $inet_if
$cmd add allow ip from any to $ln via $inet_if

$cmd add allow ip from $ln to $local_if_ip in recv $local_if
$cmd add allow ip from $local_if_ip to $ln out xmit $local_if

$cmd add allow ip from $ln to any in recv $local_if
$cmd add allow ip from any to $ln out xmit $local_if

$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


Telepuzik 21-09-2007 11:23 647095

Цитата:

Цитата Vygov
$cmd add allow tcp from any to any 4899
$cmd add allow tcp from any 4899 to any »

Закоментируйте эти два правила.
Цитата:

Цитата Vygov
$cmd add allow tcp from any to 192.168.111.9 4899 in recv xl0 »

Может rl0 а не xl0 ??
Что показывает tcpdump ???

Vygov 21-09-2007 12:11 647131

Цитата:

Цитата Telepuzik
Закоментируйте эти два правила. »

Не помогло.
Цитата:

Цитата Telepuzik
Может rl0 а не xl0 ?? »

xl0. Везде, где нужно, прописано xl0, ошибки нет.
Цитата:

Цитата Telepuzik
Что показывает tcpdump ??? »

tcpdump -i xl0 -l -n port 4899
Реакции вообще никакой, будто и не коннекчусь на этот порт.

Telepuzik 21-09-2007 12:34 647141

Что то не понятно.
xl0 - внешний интерфейс ?? Если да то почему вы приводите:
Цитата:

Цитата Vygov
inet_if="rl0" »

Цитата:

Цитата Vygov
tcpdump -i xl0 -l -n port 4899
Реакции вообще никакой, будто и не коннекчусь на этот порт »

Может провайдер закрыл порты.

Vygov 21-09-2007 12:40 647144

Цитата:

Цитата Telepuzik
1. Оставьте на время тестирования 2 правила ipfw:
${ipfw} add divert natd all from any to any via <номер вашего интерфейса>
${ipfw} add allow ip from any to any
2. Запустите tcpdump на внешнем и внутреннем интерфесах и попробуйте соединиться через Radmin, увидите где пропадают пакеты:
tcpdump -i <внешний интерфейс> dst port 4489
tcpdump -i <внутренний интерфейс> dst port 4489
И приведите ipconfig /all с машинки где установлен сервер RAdmin. »

Ок, попробую. А прослушивать внутренний и внешний интерфейс одновременно можно или поочереди?

Цитата:

Цитата Telepuzik
xl0 - внешний интерфейс ?? Если да то почему вы приводите:
Цитата Vygov:
inet_if="rl0" » »

Опечатка.

Telepuzik 21-09-2007 14:08 647196

Цитата:

Цитата Vygov
Ок, попробую. А прослушивать внутренний и внешний интерфейс одновременно можно или поочереди? »

Можно, я захожу на шлюз через putty открываю 2 соединенения, в одном окне tcpdump для внешнего интерфеса, в другом для внутренного и сразу вижу прошли пакеты или нет. Так искал проблему когда настраивал RDP.

Vygov 21-09-2007 14:14 647200

Большой респект, сработало! Оставил все настройки, как были, какие были приведены Вами выше - все работает.
Не та фаза луны была, что ли. :-)))

Последний вопрос в этой теме: понимаю, что хочу невозможного, но... возможен ли вариант работы через один порт на всю сетку или для каждого ip отдельный порт и свой редирект нужно создавать?

Telepuzik 21-09-2007 14:29 647213

Цитата:

Цитата Vygov
Последний вопрос в этой теме: понимаю, что хочу невозможного, но... возможен ли вариант работы через один порт на всю сетку или для каждого ip отдельный порт и свой редирект нужно создавать? »

На всю сеть через один порт не получиться. Я захожу на одну машину через RDP, а затем с нее на любой хост в локальной сети.


Время: 18:16.

Время: 18:16.
© OSzone.net 2001-