The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
FreeBSD 10.2 GRE IPFW+NAT или PF, !*! rtroll, 10-Дек-15, 08:32  [смотреть все]
Господа, бьюсь уже 3-юю неделю.
Суть проблемы:
есть предприятие, к которому нужно коннектиться по VPN+RDP.
схема:
Интернет -> FreeBSD 10.2 (Шлюз, Sendmail) -> LAN предприятия -> Win2k3 (PPTP+DHCP+RDP)
На данный момент стоит фря 8.2, на ней, вышеуказанная схема, работает через IPFW.

Стала задача поставить новый/более "мощный" в смысле конфигурации сервер, на который накатил FreeBSD 10.2, поднял всё необходимое, за исключением возможности подключения к LAN из вне.

Первую неделю воевал с IPFW+NAT - тишина.
########################################################
rc.conf
########################################################
#Внешний интерфейс
ifconfig_re0="inet 10.10.13.196 netmask 255.255.255.0"
#Локальный интерфейс
ifconfig_rl0="inet 192.168.1.110 netmask 255.255.255.0"
firewall_logif="YES"
defaultrouter="10.10.13.1"
sshd_enable="YES"

firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/ipfw.rules"
firewall_type="Open"
firewall_quiet="YES"
firewall_logging="NO"

natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="re0"
natd_flags="-s -m -u -f /etc/natd.conf"
########################################################
########################################################
ipfw.rules
########################################################
#!/bin/sh

fwcmd="/sbin/ipfw"
outer_ip="10.10.13.196"
inner_ip="192.168.1.110"
inner_net="192.168.1.0/24"
nat_port="8668"
$fwcmd -f flush

# divert natd all via external iface
$fwcmd add 6 divert 8668 ip from any to any via re0
$fwcmd add 7 allow tcp from any to 10.10.13.196 3389 via any
$fwcmd add 7 deny tcp from any to any 3389 via re0

# loopback
$fwcmd add 8 allow tcp from any 1723 to any
$fwcmd add 8 allow gre from any to any
$fwcmd add 8 allow tcp from any to any 1723

# checkstate
$fwcmd add 1010 check-state

# skippers
$fwcmd add 1020 skipto 2000 all from any to any via re0
$fwcmd add 1030 skipto 3000 all from any to any via rl0

# re0 - divert incoming
$fwcmd add 2110 skipto 2900 all from any to $outer_ip in via re0
$fwcmd add 2150 allow tcp from any to $inner_net established in via re0

$fwcmd add 2152 allow udp from any 53 to $inner_net in via re0
$fwcmd add 2155 allow tcp from any 53 to $inner_net in via re0
$fwcmd add 2156 allow udp from any 42 to $inner_net in via re0

# re0 - divert outgoing
$fwcmd add 2200 skipto 2900 all from $outer_ip to any out via re0
$fwcmd add 2250 allow tcp from $outer_ip to any out via re0 established
$fwcmd add 2251 allow tcp from $outer_ip to any out via re0 setup

# re0 - local
$fwcmd add 2900 allow tcp from $outer_ip to any established via re0
$fwcmd add 2901 allow tcp from any to $outer_ip established via re0
$fwcmd add 2902 allow tcp from $outer_ip to any via re0 setup
$fwcmd add 2910 allow udp from $outer_ip to any out via re0 keep-state
$fwcmd add 2920 allow icmp from any to any via re0


# FORWARD ALL TO OUR PROXY
$fwcmd add 3490 skipto 3510 tcp from any to any in via rl0
$fwcmd add 3500 fwd 127.0.0.1,3128 tcp from $inner_net to any 80,81 in via rl0
$fwcmd add 3510 allow all from any to any via rl0
########################################################
########################################################
natd.conf
########################################################
redirect_proto gre 192.168.1.10
redirect_port tcp 192.168.1.10:1723 1723
redirect_port tcp 10.10.13.196:25 2525
########################################################
########################################################


--------------------------------------------------------
Вторую неделю боролся с PF
########################################################

rc.conf
########################################################
#Внешний интерфейс
ifconfig_re0="inet 10.10.13.196 netmask 255.255.255.0"
#Локальный интерфейс
ifconfig_rl0="inet 192.168.1.110 netmask 255.255.255.0"
firewall_logif="YES"
defaultrouter="10.10.13.1"
sshd_enable="YES"

pf_enable="YES"
pf_rules="/etc/pf.conf"
########################################################
########################################################
pf.conf
########################################################
ext_if="re0"
int_if="rl0"
lan="192.168.1.0/24"
ext_ip="10.10.13.196"
tcp_services="{ 22, 25, 80, 110, 443, 8080, 10000, 1723, 9090, 5222, 5223, 7777, 7443, 7070, 1194, 3389 }"
udp_services="{ 53, 514 }"
table <blacklist> persist file "/etc/blacklist.ip"
set skip on lo0
set loginterface $ext_if
set block-policy return
scrub in all
nat on $ext_if from !($ext_if) -> ($ext_if:0)

nat on $ext_if inet proto tcp from  $lan to any port $tcp_services -> $ext_if
nat on $ext_if inet proto udp  from $lan to any port $udp_services -> $ext_if
nat on $ext_if inet proto icmp  from $lan to any  -> $ext_if

rdr on $ext_if proto tcp from any to any port 3389 -> 192.168.1.10
rdr on $ext_if proto tcp from any to any port 1723 -> 192.168.1.10
rdr on $ext_if proto gre -> 192.168.1.10

no nat on $ext_if proto gre all
no nat on $ext_if proto tcp from any to any port = 1723
no nat on $ext_if proto tcp from any port = 1723 to any

pass quick on $ext_if inet proto tcp from any to any port 1723
pass quick on $ext_if inet proto tcp from any port 1723 to any
pass quick inet proto gre to any keep state
pass proto 47 all keep state

pass in on $ext_if proto tcp from any to $ext_if port $tcp_services flags S/SA keep state
pass in on $ext_if proto tcp from any to $ext_if port $udp_services keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto {tcp, udp, icmp } all keep state

pass on $int_if all
########################################################

Реакции тоже ни какой - нет подключения и хоть ты кол на голове чеши, но фря не пробрасывает в сеть PPTP соединение.
Помогите разобраться.

  • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! eRIC, 14:03 , 10-Дек-15 (1) +1
    > pass quick inet proto gre to any keep state

    pass quick on $ext_if inet proto gre from any to any

    смотрели вообще какие правила попадают в ipfw или в pf?

    • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! rtroll, 14:16 , 10-Дек-15 (2)
      > pass quick on $ext_if inet proto gre from any to any
      > смотрели вообще какие правила попадают в ipfw или в pf?

      так я тоже ставил - реакции никакой

      через tcpdump -ni re0 tcp port 1723 or proto gre
      вижу что идёт подключение по 1723, но толку 0
      видимо gre не проваливается куда надо

      сейчас собираю ядро с device gre, попробую снова.

      • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! eRIC, 16:05 , 10-Дек-15 (6)
        >> pass quick on $ext_if inet proto gre from any to any
        >> смотрели вообще какие правила попадают в ipfw или в pf?
        > так я тоже ставил - реакции никакой
        > через tcpdump -ni re0 tcp port 1723 or proto gre
        > вижу что идёт подключение по 1723, но толку 0
        > видимо gre не проваливается куда надо
        > сейчас собираю ядро с device gre, попробую снова.

        раньше и давным давно помнится pf не мог работать с GRE трафиком и требовался изврат с frickin pptp proxy(который давно помер в портах). текущее дело с pf не могу сказать точно и проверить, как бы PPTP давно как не айс :D :)

        ipfw вроде как должен справляться так имеется в наличии есть alias_pptp. убери лишние правила на время проверки и микс разных натов

        глянь так же:
        http://startext.tomsk.ru/node/125
        http://shurik.kiev.ua/blog/index.php?/archives/9-FreeBSD_i_G...
        http://it-e.ru/blogs/administrirovanie/probros-trafika-pptp-...

    • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! rtroll, 14:45 , 10-Дек-15 (3)
      Пока ничего не помогло (
      Пробовал переписывать правила по различным примерам, но результат всё тот же=0

      > смотрели вообще какие правила попадают в ipfw или в pf?

      Подскажите, как это сделать.

      • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! Сергей, 14:49 , 10-Дек-15 (4)
        > Пока ничего не помогло (
        > Пробовал переписывать правила по различным примерам, но результат всё тот же=0
        >> смотрели вообще какие правила попадают в ipfw или в pf?
        > Подскажите, как это сделать.

        В случае ipfw, нафиг вы одновременно ядерный включили нат и в виде демона? Если проходит pptp, т.е. организована VPN, то зачем пробрасывать rdp, действующие правила смотреть через ipfw -a list

        • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! rtroll, 15:21 , 10-Дек-15 (5)
          > В случае ipfw, нафиг вы одновременно ядерный включили нат и в виде демона?

          Вы имеете в виду это?:
          natd_program="/sbin/natd"
          natd_enable="YES"
          natd_interface="re0"
          natd_flags="-s -m -u -f /etc/natd.conf"

          Без него не могу достучаться до сервера по 22, да и в мир он перестаёт пропускать, т.к. является ещё и шлюзом.

          > Если проходит pptp, т.е. организована VPN, то зачем пробрасывать rdp

          с этим понятно, затупил, 3389 пройдёт по 1723

          Ядро собрано с опциями:
          #####################################
          options LIBALIAS
          options IPFIREWALL
          options IPFIREWALL_VERBOSE
          options IPFIREWALL_VERBOSE_LIMIT=100
          options IPFIREWALL_DEFAULT_TO_ACCEPT
          options IPFIREWALL_NAT
          options IPDIVERT
          options DUMMYNET
          options MROUTING

          device pf
          device pflog
          device pfsync
          #####################################

          Если в rc.conf оставлять только PF, то всё кроме pptp работает
          --------------------------------------------
          вот что пишет tcpdump на внешний re0
          15:46:32.952291 IP 37.204.151.153.3593 > 10.10.13.196.1723: Flags [S], seq 3970020241, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
          15:46:35.954124 IP 37.204.151.153.3593 > 10.10.13.196.1723: Flags [S], seq 3970020241, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
          15:46:41.953933 IP 37.204.151.153.3593 > 10.10.13.196.1723: Flags [S], seq 3970020241, win 8192, options [mss 1460,nop,nop,sackOK], length 0

          и на внутренний
          15:48:45.389871 IP 192.168.1.28.51623 > 192.168.1.110.1723: Flags [S], seq 1813963124, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
          15:48:45.389931 IP 192.168.1.110.1723 > 192.168.1.28.51623: Flags [R.], seq 0, ack 1813963125, win 0, length 0
          15:48:45.891848 IP 192.168.1.28.51623 > 192.168.1.110.1723: Flags [S], seq 1813963124, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
          15:48:45.891906 IP 192.168.1.110.1723 > 192.168.1.28.51623: Flags [R.], seq 0, ack 1, win 0, length 0
          15:48:46.391829 IP 192.168.1.28.51623 > 192.168.1.110.1723: Flags [S], seq 1813963124, win 8192, options [mss 1460,nop,nop,sackOK], length 0
          15:48:46.391884 IP 192.168.1.110.1723 > 192.168.1.28.51623: Flags [R.], seq 0, ack 1, win 0, length 0

          при попытке подключения по pptp с удалённого ip на внешний, показывает, что сам порт 1723 пробрасывается, но соединения с VPN сервером на Win2k3 нет((
          15:57:22.900963 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
          15:57:25.896837 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
          15:57:31.901522 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637, win 8192, options [mss 1460,nop,nop,sackOK], length 0

          • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! кегна, 09:18 , 11-Дек-15 (8) +1
            >[оверквотинг удален]
            > 0, length 0
            > при попытке подключения по pptp с удалённого ip на внешний, показывает, что
            > сам порт 1723 пробрасывается, но соединения с VPN сервером на Win2k3
            > нет((
            > 15:57:22.900963 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
            > win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
            > 15:57:25.896837 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
            > win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
            > 15:57:31.901522 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
            > win 8192, options [mss 1460,nop,nop,sackOK], length 0

            Странные люди... Насобирают солянки из natd, kernel nat, pf, pptp на винде и спрашивают почему не работает....
            1. Убрать все виды фаирволов и натов, оставить нативный ipfw+kernel nat.
            2. Убрать pptp с винды поднять pptp на фре с помощью mpd.

            Профит...

            По первому вопросу всё просто:
            # наша сеть которую нужно выпустить в интернет
            table 2 add 172.16.0.0/21

            # внутренние ресурсы которые нету смысла выпускать сквозь nat
            table 9 add 8.8.8.8
            table 9 add 8.8.8.9
            table 9 add 8.8.8.10

            #следующие три строчки собственно и есть nat =)
            nat 1 config log if em1 reset same_ports
            add 1200 nat 1 ip from table\(2\) to not table\(9\) via em1
            add 1300 nat 1 ip from any to 8.8.8.8 via em1

          • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! tootsie, 13:47 , 14-Дек-15 (12)
            >[оверквотинг удален]
            > 0, length 0
            > при попытке подключения по pptp с удалённого ip на внешний, показывает, что
            > сам порт 1723 пробрасывается, но соединения с VPN сервером на Win2k3
            > нет((
            > 15:57:22.900963 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
            > win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
            > 15:57:25.896837 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
            > win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
            > 15:57:31.901522 IP 37.204.151.153.5636 > 192.168.1.10.1723: Flags [S], seq 550181637,
            > win 8192, options [mss 1460,nop,nop,sackOK], length 0

            Провайдер точно пропускает?

            • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! rtroll, 15:11 , 14-Дек-15 (13)
              > Провайдер точно пропускает?

              Да, пускает. Грешу на w2k3. Но найти там разрешение, либо запрет на конкретный хост или IP пока не смог.

              • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! tootsie, 08:35 , 15-Дек-15 (14)
                >> Провайдер точно пропускает?
                > Да, пускает. Грешу на w2k3. Но найти там разрешение, либо запрет на
                > конкретный хост или IP пока не смог.

                А подключаться по vpn к шлюзу не хочешь?
                А через впн тебе и rdp  к w2003 пожалуйста

                • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! rtroll, 13:10 , 15-Дек-15 (15)
                  > А подключаться по vpn к шлюзу не хочешь?
                  > А через впн тебе и rdp  к w2003 пожалуйста

                  Планирую так сделать, но это только после НГ, в виду независящих от меня причин.
                  А в данный момент необходим именно проброс 1723 и GRE.
                  В настоящее время через шлюз проходит 1723 до внутреннего интерфейса, а GRE молчит.
                  Если же из локалки через шлюз нырять наружу, то и 1723 и GRE проходят без проблем.

                  Сейчас перерыл кучу всякого, на предмет проброса pptp и gre, но результат всё тот же.
                  К сожалению инфы по FreeBSD 10.2 крайне мало.

  • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! tootsie, 15:49 , 12-Дек-15 (10)

    > firewall_nat_enable="YES"
    > firewall_script="/etc/ipfw.rules"
    > firewall_type="Open"

    где раздел Open в скрипте?

    > natd_program="/sbin/natd"
    > natd_enable="YES"

    Это к чему если ранее включен firewall_nat_enable="YES"

    >[оверквотинг удален]
    > $fwcmd add 3510 allow all from any to any via rl0
    > ########################################################
    > ########################################################
    > natd.conf
    > ########################################################
    > redirect_proto gre 192.168.1.10
    > redirect_port tcp 192.168.1.10:1723 1723
    > redirect_port tcp 10.10.13.196:25 2525
    > ########################################################
    > ########################################################

  • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! Grinya64, 13:34 , 15-Дек-15 (16)
    >[оверквотинг удален]
    > flags S/SA keep state
    > pass in on $ext_if proto tcp from any to $ext_if port $udp_services
    > keep state
    > pass out on $ext_if proto tcp all modulate state flags S/SA
    > pass out on $ext_if proto {tcp, udp, icmp } all keep state
    > pass on $int_if all
    > ########################################################
    > Реакции тоже ни какой - нет подключения и хоть ты кол на
    > голове чеши, но фря не пробрасывает в сеть PPTP соединение.
    > Помогите разобраться.

    У меня вся GRE IPFW+NAT связка работала так, нужно сделать второй нат
    NAT VPN Out
        ${fwcmd} nat 10 config if ${eint}
        ${fwcmd} add nat 10 gre from any to any
        ${fwcmd} add nat 10 tcp from ${ipv} to any dst-port pptp,1396,53,21
        ${fwcmd} add nat 10 tcp from any pptp,1396,53,21 to any
    где {ipv} список ip разрешённых для работы с внешним vpn сервером.
    natd не нужен, для работы по 22 порту достаточно
    # rulezz for sshit table
        ${fwcmd} add deny tcp from table\(0\) to me dst-port 22

  • FreeBSD 10.2 GRE IPFW+NAT или PF, !*! Grinya64, 13:46 , 15-Дек-15 (17)
    по ssh забыл нужно после запрещающих правил на которых ставится бан, естественно добавить
    # SSH for localhost allow
        ${fwcmd} add allow tcp from any to me 22



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру