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

Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интернет!!!

Добавлено: 2013-08-12 8:35:21
pryanik
Доброго дня форумчане!
Я только начал изучать администрирование под Freebsd. Настроил стабильно работающий роутер под управлением Freebsd 9.0 (ipfw+nat +Squid 3.2 + Bing 9.8 + lightsquid)
Проблема возникла в следующем - нужен доступ извне к RDP под Win2k3. Уже перекурил man`ы до тошноты, стал похож головой на старый моник, а никак не получается организовать проброс портов...
rc.conf :

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

hostname="nimbus.matp"
keymap=ru.cp1251
scrnmap="win2cpp866"
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
ifconfig_re0=" inet 192.168.7.252 netmask 255.255.255.0"
ifconfig_rl0=" inet 192.168.0.252 netmask 255.255.255.0"
ifconfig_re0_alias0="inet 192.168.7.10 netmask 255.255.255.0"
defaultrouter="192.168.7.1"
apache22_enable="YES"
gateway_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="re0"
firewall_script="/etc/fw_script.02"
named_enable="YES" # автозапуск BIND
named_auto_forward="YES" # автонастройка forward сервера
sshd_enable="YES"
moused_enable="YES"
ntpd_enable="YES"
ntpd_program="/usr/local/bin/ntpd"
squid_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
fw_script.02 :

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

exface="re0"                            # внешний сетевой интерфейс сервера
inface="rl0"                             # внутренний сетевой интерфейс сервера
in_ip="192.168.0.252"               # ip-адрес внутреннего интерфейса сервера
ex_ip="192.168.7.10"
rdp_ex="192.168.10.252"
loc_net="192.168.0.0/24"
rdp1="192.168.0.10"
rdp_port="3389"
port1="12124"

# префикс команды, параметр -q означает "тихую" работу
pre_com="ipfw -q"

# для начала удаляем все существующие правила!
$pre_com -f flush

# разрешение трафика на петлевом интерфейсе – необходимо для работы ОС
# Операционная система UNIX использует интерфейс lo0 и IP-адрес
# 127.0.0.1 для внутренних нужд. Таким образом, firewall должен
# обеспечивать беспрепятственный обмен данными на указанных интерфейсе и
# IP-адресе.
$pre_com add 100 allow ip from any to any via lo0

# запрет ip трафика от любого источника на всю сеть loopback интерфейса
$pre_com add 200 deny ip from any to 127.0.0.0/8

# запрет ip трафика со всей сети loopback интерфейса на любой источник
$pre_com add 300 deny ip from 127.0.0.0/8 to any

$pre_com add 350 allow tcp from me to any out via $ex_ip keep-state uid squid

$pre_com add 360 fwd 127.0.0.1,3128 tcp from $loc_net to any 80-83,8080-8088 out via $ex_ip

# разрешаем беспрепятственному прохождению трафика внутри нашей локальной сети!!!
$pre_com add 400 allow all from any to any via $inface

$pre_com add 410 fwd tcp from 192.168.7.1 to
$pre_com add 500 allow tcp from any $rdp_port to me via $ex_ip
$pre_com add 510 allow tcp from me to any $rdp_port via $ex_ip

$pre_com add 520 allow tcp from any $port1 to me via $ex_ip
$pre_com add 530 allow tcp from me to any $port1 via $ex_ip

# включаем kernel NAT на интерфейсе re0 с параметрами
# сбрасывать таблицу соединений при смете ip-адреса сетевого интерфейса
# пытаться сохранить порты
# по-умолчанию запрещать входящие подключения

$pre_com nat 1 config log if $exface reset same_ports deny_in \
redirect_port tcp $rdp1:$rdp_port $rdp_port \
redirect_port udp $rdp1:$rdp_port $rdp_port \
redirect_port tcp $rdp1:$rdp_port $port1 \
redirect_port udp $rdp1:$rdp_port $port1 \
redirect_addr $rdp1 $rdp_ex

# все что проходит через внешний интерфейс перенаправляем в NAT
$pre_com add 1030 nat 1 ip from any to any via $ex_ip

Для тестов на ADSL-роутере открыл 3 порта по разным назначениям, что видно из настроек NAT`а, не проходит ни одно из подключений. Однако, если сервер напрямую подключить к ADSL-роутеру - все работает без каких либо проблем...

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 8:52:29
Bayerische
IPFIREWALL_FORWARD есть в ядре?

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 8:54:05
pryanik
Да

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

options         IPFIREWALL
options         IPDIVERT
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_NAT
options         LIBALIAS
options         DUMMYNET
options         HZ="1000"
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD


Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 9:01:05
pryanik
Возможно, я привел не полную картину подключения сети к иннету:
провайдер --> ADSL-роутер --> freebsd с 2-мя сетевыми --> сеть
До появления freebsd все лезли в иннет кот куда и безконтрольно, что очень сильно сказывалось на работе специфичных интернет систем (ГЛОНАСС в частности)... Сейчас мной установлен данный freebsd - PROXY.

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 9:18:20
snorlov
pryanik писал(а):Доброго дня форумчане!
Я только начал изучать администрирование под Freebsd. Настроил стабильно работающий роутер под управлением Freebsd 9.0 (ipfw+nat +Squid 3.2 + Bing 9.8 + lightsquid)
Проблема возникла в следующем - нужен доступ извне к RDP под Win2k3. Уже перекурил man`ы до тошноты, стал похож головой на старый моник, а никак не получается организовать проброс портов...
Зачем вам еще одна дырка... Поднимите VPN, хотите на openvpn, хотите на mpd...

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 9:25:35
pryanik
snorlov писал(а):
pryanik писал(а):Доброго дня форумчане!
Я только начал изучать администрирование под Freebsd. Настроил стабильно работающий роутер под управлением Freebsd 9.0 (ipfw+nat +Squid 3.2 + Bing 9.8 + lightsquid)
Проблема возникла в следующем - нужен доступ извне к RDP под Win2k3. Уже перекурил man`ы до тошноты, стал похож головой на старый моник, а никак не получается организовать проброс портов...
Зачем вам еще одна дырка... Поднимите VPN, хотите на openvpn, хотите на mpd...
Связьь нужна не постоянная, а когда лишь требуется (1-2 раза в месяц), зачем для этого поднимать VPN? Или я чего-то не допонимаю?

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 10:04:40
lazhu
pryanik писал(а): Связьь нужна не постоянная, а когда лишь требуется (1-2 раза в месяц), зачем для этого поднимать VPN? Или я чего-то не допонимаю?
Недопонимаете. Открытый наружу RDP - огромная дыра для всех, кому не лень. Независимо от того, с какой частотой он вам требуется. Организуйте впн, как вам посоветовали выше, и гоняйте по нему что хотите:

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

add allow ip any to any via tun0

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 10:11:06
_Andy
pryanik писал(а):Связьь нужна не постоянная, а когда лишь требуется (1-2 раза в месяц), зачем для этого поднимать VPN? Или я чего-то не допонимаю?
Насколько я понял из задачи, надо пробросить порт 3389 на машину внутри сети, причем на роутере все открыто. Кстати:

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

$pre_com add 410 fwd tcp from 192.168.7.1 to
$pre_com add 500 allow tcp from any $rdp_port to me via $ex_ip
$pre_com add 510 allow tcp from me to any $rdp_port via $ex_ip

$pre_com add 520 allow tcp from any $port1 to me via $ex_ip
$pre_com add 530 allow tcp from me to any $port1 via $ex_ip
правило 410 недописано :). Правило 500, 520 - откуда такая уверенность, что исходящий порт будет обязательно 3389 или 12124? Откройте только те порты к которым можно соединятся к вам.

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 11:02:12
pryanik
_Andy писал(а):
pryanik писал(а):Связьь нужна не постоянная, а когда лишь требуется (1-2 раза в месяц), зачем для этого поднимать VPN? Или я чего-то не допонимаю?
Насколько я понял из задачи, надо пробросить порт 3389 на машину внутри сети, причем на роутере все открыто. Кстати:

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

$pre_com add 410 fwd tcp from 192.168.7.1 to
$pre_com add 500 allow tcp from any $rdp_port to me via $ex_ip
$pre_com add 510 allow tcp from me to any $rdp_port via $ex_ip

$pre_com add 520 allow tcp from any $port1 to me via $ex_ip
$pre_com add 530 allow tcp from me to any $port1 via $ex_ip
правило 410 недописано :). Правило 500, 520 - откуда такая уверенность, что исходящий порт будет обязательно 3389 или 12124? Откройте только те порты к которым можно соединятся к вам.
Уверенность заключается в том, что в правилах NAT на ADSL-роутере выставлено перенаправление на внешнюю сетевуху Proxy по 3-м правилам

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

Server Name External Port Start External Port End Protocol Internal Port Start Internal Port End Server IP Address Remove 
term1                 12124                   12124               TCP             12124                 12124                     192.168.7.252  
term1                 12124                   12124               UDP             12124                 12124                     192.168.7.252  
term2                 12130                   12130           TCP/UDP           3389                   3389                     192.168.7.252  
term3                 12150                   12150           TCP/UDP           3389                   3389                      192.168.7.10  
( в качестве теста в данном случае)
вот и пробую различные привязки.
Если создать правило NAT`а на ADSL и дать прямой IP ADSL в качестве шлюза, обходя proxy - то все замечательно работает.
Убрал пока 410 и 500-530 правила.
Включил nat следующим образом:

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

ipfw nat show config
ipfw nat 1 config if re0 log same_ports reset redirect_port udp 192.168.0.10:3389 3389 redirect_port tcp 192.168.0.10:3389 3389
в sockstat -l

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

USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
squid    squid      2034  7  udp4 6 *:29309               *:*
squid    squid      2034  8  udp4   *:32100               *:*
squid    squid      2034  16 tcp4   127.0.0.1:3128        *:*
www      httpd      1831  3  tcp4   192.168.0.252:80      *:*
www      httpd      1830  3  tcp4   192.168.0.252:80      *:*
www      httpd      1829  3  tcp4   192.168.0.252:80      *:*
www      httpd      1828  3  tcp4   192.168.0.252:80      *:*
www      httpd      1827  3  tcp4   192.168.0.252:80      *:*
root     sendmail   1730  3  tcp4   127.0.0.1:25          *:*
root     httpd      1700  3  tcp4   192.168.0.252:80      *:*
root     sshd       1692  3  tcp6   *:22                  *:*
root     sshd       1692  4  tcp4   *:22                  *:*
root     ntpd       1627  20 udp4   *:123                 *:*
root     ntpd       1627  21 udp6   *:123                 *:*
root     ntpd       1627  22 udp4   192.168.0.252:123     *:*
root     ntpd       1627  23 udp6   fe80:6::2c0:26ff:fea6:a96c:123 *:*
root     ntpd       1627  24 udp4   192.168.7.252:123     *:*
root     ntpd       1627  25 udp6   fe80:7::211:5bff:fe76:a8c:123 *:*
root     ntpd       1627  26 udp4   192.168.7.10:123      *:*
root     ntpd       1627  27 udp6   ::1:123               *:*
root     ntpd       1627  28 udp6   fe80:a::1:123         *:*
root     ntpd       1627  29 udp4   127.0.0.1:123         *:*
bind     named      1466  20 tcp4   192.168.0.252:53      *:*
bind     named      1466  21 tcp4   127.0.0.1:953         *:*
bind     named      1466  22 tcp6   ::1:953               *:*
bind     named      1466  512 udp4  192.168.0.252:53      *:*
root     syslogd    1357  4  dgram  /var/run/log
root     syslogd    1357  5  dgram  /var/run/logpriv
root     syslogd    1357  6  dgram  /var/run/log
root     syslogd    1357  7  dgram  /var/named/var/run/log
root     syslogd    1357  8  udp6   *:514                 *:*
root     syslogd    1357  9  udp4   *:514                 *:*
root     devd       1153  4  stream /var/run/devd.pipe
не вижу открытого 3389 порта... И все равно не подключается... Зараза...

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-12 12:18:16
snorlov
У вас как мне кажется получается масло масляное, а именно nat поднят и на модеме и на роутере, в этих условиях действительно очень трудно получить рабочую конфигурацию для доступа извне, вы бы оставили что-то одно, я бы посоветовал модем перевести в режим моста, и все настройки перенести на фрю, легче будет разобраться...

Re: Freebsd 9.0 + ipfw nat + Squid - Нужен RDP через интерне

Добавлено: 2013-08-13 3:40:02
pryanik
snorlov писал(а):У вас как мне кажется получается масло масляное, а именно nat поднят и на модеме и на роутере, в этих условиях действительно очень трудно получить рабочую конфигурацию для доступа извне, вы бы оставили что-то одно, я бы посоветовал модем перевести в режим моста, и все настройки перенести на фрю, легче будет разобраться...
Спасибо за совет. Буду пробовать.
Хотя хотелось бы попробовать именно таким образом. Ладно это все не столь срочно. Любые идеи буду рад позаимствовать для их обкатки.