The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (ok) on 08-Авг-07, 15:45 
Здравствуйте, All
Поискал на форуме и не нашел решения своей проблемы.
Постановка задачи
0) надо установить VPN с удаленным центром из нашего филиала
--- Ну почему это НЕ работает ?!

Условия
1) Сервер центрального офиса - Linux
   На нем установлен FreeS/WAN
   внешний адрес - xxx.xxx.xxx.xxx
   внутренний адрес - 10.198.3.5
   внутренняя сеть  - 10.198.3.0/24
2) Сервер филиала - FreeBSD (я с траблами тут).
   внешний адрес - yyy.yyy.yyy.yyy
   внутренний адрес - 192.168.159.12
   внутренняя сеть  - 192.168.159.0/24
3) их админ прислал записку, типа, настройте ваш FreeS/WAN
   <
    conn filial
    type=tunnel
    left=yyy.yyy.yyy.yyy
    leftsubnet=192.168.159.0/24
    right=xxx.xxx.xxx.xxx
    rightsubnet=10.198.3.0/24
    auto=start
    -  and in /etc/ipsec.secrets (chmod 600 /etc/ipsec.secrets)
    yyy.yyy.yyy.yyy xxx.xxx.xxx.xxx: PSK "slovo"
   >

Мои конфиги (не судите строго за множество фильтров)

4) /etc/rc.conf:
   gif_interfaces="gif0"
   gifconfig_gif0="yyy.yyy.yyy.yyy xxx.xxx.xxx.xxx"
   ifconfig_gif0="inet 192.168.159.12 10.198.3.5 netmask 255.255.255.0"
   static_routes="vpn"
   route_vpn="10.198.3.0/24 10.198.3.5"
   export route_vpn

   usbd_enable="YES"
   LINUX_ENABLE="YES"
   gateway_enable="YES"
   named_enable="YES"

   ipfilter_enable="YES"            # Set to YES to enable ipfilter functionality
   ipfilter_program="/sbin/ipf"     # where the ipfilter program lives
   ipfilter_rules="/etc/ipf.rules"  # rules definition file for ipfilter, see
   ipfilter_flags=""                # additional flags for ipfilter

   ipnat_enable="YES"               # Set to YES to enable ipnat functionality
   ipnat_program="/sbin/ipnat"      # where the ipnat program lives
   ipnat_rules="/etc/ipnat.rules"   # rules definition file for ipnat
   ipnat_flags=""                   # additional flags for ipnat

   firewall_enable="YES"
   firewall_script="/etc/ipfw.rules"

   inetd_enable="YES"
   sendmail_enable="YES"
   sshd_enable="YES"
   local_startup="/usr/local/etc/rc.d"

   ipsec_enable="YES"
   ipsec_file="/etc/ipsec.conf"
   racoon_enable="YES"
   racoon_flags="-l /usr/local/etc/racoon/racoon.log" # лог рядом с конфигом

5) ipsec.conf:
   #delete all existing entries from the SAD and SPD databases
   flush;
   spdflush;
   #add the policy to the SPD database
   spdadd 192.169.159.0/24 10.198.3.0/24 any -P out ipsec
   esp/tunnel/yyy.yyy.yyy.yyy-xxx.xxx.xxx.xxx/require;
   spdadd 10.198.3.0/24 192.168.159.0/24 any -P in  ipsec
   esp/tunnel/xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy/require;

6) racoon.conf
   path include "/usr/local/etc/racoon" ;
   path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;
   log debug2;
   padding {
       maximum_length 20;          # maximum padding length.
       randomize off;              # enable randomize length.
       strict_check off;           # enable strict check.
       exclusive_tail off;         # extract last one octet.
   }
   listen  {
       isakmp yyy.yyy.yyy.yyy [500];
   }
   timer   {
       # These value can be changed per remote node.
       counter 5;          # maximum trying count to send.
       interval 20 sec;    # maximum interval to resend.
       persend 1;          # the number of packets per a send.

       # timer for waiting to complete each phase.
       phase1 60 sec;
       phase2 60 sec;
   }
   remote anonymous {
       exchange_mode aggressive,main;
       doi ipsec_doi;
       situation identity_only;
       nonce_size 16;
       lifetime time 36 hour;      # sec,min,hour
       initial_contact on;
       support_proxy on;
       proposal_check obey;        # obey, strict or claim

       proposal {
           encryption_algorithm 3des;
           hash_algorithm md5;
           authentication_method pre_shared_key ;
           dh_group 2;
       }
   }
   sainfo anonymous {
       pfs_group 1;
       lifetime time 36 hour;
       encryption_algorithm 3des,des,cast128,blowfish;
       authentication_algorithm hmac_sha1,hmac_md5;
       compression_algorithm deflate ;
   }

7) psk.txt (chmod 0600 psk.txt && chown root:wheel psk.txt)
   xxx.xxx.xxx.xxx slovo

8) конфиги фильтров - все разрешено уже в поисках истины :-(

Пожалуйста, помогите советом (курю мануалы - пока бесполезно)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (ok) on 08-Авг-07, 16:13 
>Пожалуйста, помогите советом (курю мануалы - пока бесполезно)

Забыл добавить, что ядро собрано с опциями
options         IPFILTER
options         IPFILTER_LOG

options         IPFIREWALL
options         IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPDIVERT
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT

options         IPSEC           # IP security
options         IPSEC_ESP       # IP security (crypto; define w/ IPSEC)
options         IPSEC_DEBUG     # debug for IP security
options         IPSEC_FILTERGIF # filter ipsec packets from a tunnel

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (ok) on 08-Авг-07, 16:24 
Еще логи racoon:
2007-08-08 19:02:09: INFO: @(#)ipsec-tools 0.6.7 (http://ipsec-tools.sourceforge.net)
2007-08-08 19:02:09: INFO: @(#)This product linked OpenSSL 0.9.7e-p1 25 Oct 2004 (http://www.openssl.org/)
2007-08-08 19:02:09: DEBUG2: lifetime = 129600
2007-08-08 19:02:09: DEBUG2: lifebyte = 0
2007-08-08 19:02:09: DEBUG2: encklen=0
2007-08-08 19:02:09: DEBUG2: p:1 t:1
2007-08-08 19:02:09: DEBUG2: 3DES-CBC(5)
2007-08-08 19:02:09: DEBUG2: MD5(1)
2007-08-08 19:02:09: DEBUG2: 1024-bit MODP group(2)
2007-08-08 19:02:09: DEBUG2: pre-shared key(1)
2007-08-08 19:02:09: DEBUG2:
2007-08-08 19:02:09: DEBUG: hmac(modp1024)
2007-08-08 19:02:09: DEBUG: compression algorithm can not be checked because sadb message doesn't support it.
2007-08-08 19:02:09: DEBUG2: parse successed.
2007-08-08 19:02:09: INFO: yyy.yyy.yyy.yyy [500] used as isakmp port (fd=5)
2007-08-08 19:02:09: DEBUG: get pfkey X_SPDDUMP message
2007-08-08 19:02:09: DEBUG2:
2007-08-08 19:02:09: DEBUG: get pfkey X_SPDDUMP message
2007-08-08 19:02:09: DEBUG2:
2007-08-08 19:02:09: DEBUG: sub:0xbfbfe790: 192.169.159.0/24[0] 10.198.3.0/24[0] proto=any dir=out
2007-08-08 19:02:09: DEBUG: db :0x80b1408: 10.198.3.0/24[0] 192.168.159.0/24[0] proto=any dir=in
2007-08-08 19:02:37: DEBUG: msg 1 not interesting
2007-08-08 19:03:14: DEBUG: msg 1 not interesting
2007-08-08 19:04:18: DEBUG: msg 1 not interesting
2007-08-08 19:08:58: DEBUG: msg 1 not interesting


А вот локалка не пингуется...
Пинг с клиента моей локалки
C:\>ping 10.198.3.5
Обмен пакетами с 10.198.3.5 по 32 байт:
Ответ от 192.168.159.12: Заданный узел недоступен.
Ответ от 192.168.159.12: Заданный узел недоступен.
Ответ от 192.168.159.12: Заданный узел недоступен.
Ответ от 192.168.159.12: Заданный узел недоступен.
Статистика Ping для 10.198.3.5:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

Пинг с сервера моего:
# ping 10.3.198.1
PING 10.3.198.5 (10.3.198.5): 56 data bytes
^C
--- 10.3.198.5 ping statistics ---
64 packets transmitted, 0 packets received, 100% packet loss

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от Аноним on 09-Авг-07, 13:59 
Почему в Вы в linux не используете родной ipsec, там вам и racoon и синтаксис такой же, зачем городить зоопарк. Ставите в linux из портов ipsec-tools и создаете политики
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (ok) on 10-Авг-07, 11:53 
>Почему в Вы в linux не используете родной ipsec, там вам и
>racoon и синтаксис такой же, зачем городить зоопарк. Ставите в linux
>из портов ipsec-tools и создаете политики

К сожалению, на той стороне мне не разрешается ничего менять и их админ САМ решает что ему удобнее. На сегодня - удалось установить соединение
2007-08-10 14:44:13: INFO: ISAKMP-SA established yyy.yyy.yyy.yyy[500]-xxx.xxx.xxx.xxx[500] spi:.....
2007-08-10 14:44:13: DEBUG: ===
, но что-то машины друг друга не видят (нет ни пинга, ни доступа к расшаренным ресурсам).
Маршруты у меня вроде как правильные, и файерволлы ничего не бреют. Это у них там или у меня здесь собака зарыта???

Приведу конфиги:

0)
/etc/rc.conf
   ipsec_enable="YES"
   ipsec_file="/etc/ipsec.conf"

   gif_interfaces="gif0"
   gifconfig_gif0="yyy.yyy.yyy.yyy xxx.xxx.xxx.xxx"
   ifconfig_gif0="inet 192.168.159.12 10.198.3.5 netmask 255.255.255.0"

   static_routes="vpn"
   route_vpn="inet 10.198.3.0/24 10.198.3.5 netmask 255.255.255.0"
   export route_vpn

   racoon_flags="-l /usr/local/etc/racoon/racoon.log"
   racoon_enable="YES"

   setkey -Pv -F
   setkey -f /etc/ipsec.conf

   gateway_enable="YES"
   named_enable="YES"

1)
/usr/local/etc/racoon/racoon.conf
   path include "/usr/local/etc/racoon" ;
   path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;
   log debug2;
   padding {
       maximum_length 20;          # maximum padding length.
       randomize off;              # enable randomize length.
       strict_check off;           # enable strict check.
       exclusive_tail off;         # extract last one octet.
   }
   listen  {
       isakmp yyy.yyy.yyy.yyy [500];
   }
   timer   {
       # These value can be changed per remote node.
       counter 5;          # maximum trying count to send.
       interval 20 sec;    # maximum interval to resend.
       persend 1;          # the number of packets per a send.
       # timer for waiting to complete each phase.
       phase1 60 sec;
       phase2 60 sec;
   }
   remote anonymous {
       exchange_mode aggressive,main;
       doi ipsec_doi;
       situation identity_only;
       nonce_size 16;
       lifetime time 20 hour;
       initial_contact on;
       support_proxy on;
       proposal_check obey;
       proposal {
           encryption_algorithm 3des;
           hash_algorithm sha1;
           authentication_method pre_shared_key ;
           dh_group 2;
       }
   }
   sainfo anonymous {
       pfs_group 1;
       lifetime time 20 hour;
       encryption_algorithm 3des;
       authentication_algorithm hmac_sha1;
       compression_algorithm deflate ;
   }

2)
#ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet yyy.yyy.yyy.yyy netmask 0xfffffff8 broadcast zzz.zzz.zzz.zzz
        ether aa:aa:aa:aa:aa:aa
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
fxp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.159.12 netmask 0xffffff00 broadcast 192.168.159.255
        ether bb:bb:bb:bb:bb:bb
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
        tunnel inet yyy.yyy.yyy.yyy --> xxx.xxx.xxx.xxx
        inet 192.168.159.12 --> 10.198.3.5 netmask 0xffffff00

3)
# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            my_gateway         UGS         0     1447   fxp0
10.198.3/24        10.198.3.5         UGS         0   136017   fxp1
10.198.3.5         192.168.159.12     UH          0        0   gif0
127.0.0.1          127.0.0.1          UH          0     2535    lo0
192.168.159        link#2             UC          0        0   fxp1
192.168.159.2      -----------------  UHLW        1      189   fxp1   1052
192.168.159.3      -----------------  UHLW        1   139052   fxp1   1060
192.168.159.11     -----------------  UHLW        1      153   fxp1   1193
192.168.159.12     -----------------  UHLW        2        0    lo0
my_global_net/29   link#1             UC          0        0   fxp0
my_gateway         -----------------  UHLW        2        0   fxp0   1188

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от Аноним on 10-Авг-07, 12:19 
на другой стороне какая версия freeswan 2.0 ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (ok) on 10-Авг-07, 12:45 
>на другой стороне какая версия freeswan 2.0 ?

Сие мне не ведомо, все что мне было передано -
3) их (центрального офиса) админ (который не снисходит до филиалов) прислал записку, типа, настройте ваш FreeS/WAN (или что там у вас есть)
   <
    conn filial
    type=tunnel
    left=yyy.yyy.yyy.yyy
    leftsubnet=192.168.159.0/24
    right=xxx.xxx.xxx.xxx
    rightsubnet=10.198.3.0/24
    auto=start
    -  and in /etc/ipsec.secrets (chmod 600 /etc/ipsec.secrets)
    yyy.yyy.yyy.yyy xxx.xxx.xxx.xxx: PSK "slovo"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (ok) on 13-Авг-07, 14:13 
Здравствуйте, All
Удалось добиться того, что компы с той стороны пингует компы в моем филиале.
А вот с нашей стороны это никак - и увидеть соответственно ни мы их, ни они нас не могут.
Посоветуйте, какие настройки сменить на моем FreeBSD?

В rc.conf
   ipfilter_enable="YES"            # Set to YES to enable ipfilter functionality
   ipfilter_program="/sbin/ipf"     # where the ipfilter program lives
   ipfilter_rules="/etc/ipf.rules"  # rules definition file for ipfilter, see
   ipfilter_flags=""                # additional flags for ipfilter
   ipnat_enable="YES"               # Set to YES to enable ipnat functionality
   ipnat_program="/sbin/ipnat"      # where the ipnat program lives
   ipnat_rules="/etc/ipnat.rules"   # rules definition file for ipnat
   ipnat_flags=""                   # additional flags for ipnat
   firewall_enable="YES"
   firewall_script="/etc/ipfw.rules"
   firewall_logging="YES"

Правила файерволла написаны такие:
ipf.rules
   block in log all
   block out log all
   pass in quick on gif0 all
   pass out quick on gif0 all
   pass in quick on lo0 all
   pass out quick on lo0 all
   pass in log quick proto esp from any to any
   pass in log quick proto udp from any to any
   pass in quick on fxp1 all
   pass out quick on fxp1 all
   pass in quick on fxp0 all
   pass out quick on fxp0 all

ipnat.rules
   map fxp0 192.168.159.0/24 -> yyy.yyy.yyy.yyy/32 proxy port ftp ftp/tcp
   map fxp0 192.168.159.0/24 -> yyy.yyy.yyy.yyy/32

ipfw.rules
   fwcmd="/sbin/ipfw"
   ${fwcmd} -f flush
   ${fwcmd} add 100        allow   log ip  from any to any via gif0
   ${fwcmd} add 200        allow   log udp from yyy.yyy.yyy.yyy to xxx.xxx.xxx.xxx isakmp
   ${fwcmd} add 300        allow   log udp from xxx.xxx.xxx.xxx to yyy.yyy.yyy.yyy isakmp
   ${fwcmd} add 400        allow   log esp from yyy.yyy.yyy.yyy to xxx.xxx.xxx.xxx
   ${fwcmd} add 500        allow   log esp from xxx.xxx.xxx.xxx to yyy.yyy.yyy.yyy
   ${fwcmd} add 600        allow   log ipencap from yyy.yyy.yyy.yyy to xxx.xxx.xxx.xxx
   ${fwcmd} add 700        allow   log ipencap from xxx.xxx.xxx.xxx to yyy.yyy.yyy.yyy
   ${fwcmd} add 65000      allow   log all from any to any
   ${fwcmd} add 65535      deny    log ip  from any to any

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от Mikhail email(??) on 14-Авг-07, 09:27 
Проверяйте маршрутизацию. И еще - tcpdump в руки и смотрите, что куда и как ходит. Внешний интерфейс, внутренний... Есть ли ответы на, например, ping... Куда они уходят - не на DGW вместо ipsec, случаем?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от 5sec (??) on 13-Ноя-07, 12:43 
>Проверяйте маршрутизацию. И еще - tcpdump в руки и смотрите, что куда
>и как ходит. Внешний интерфейс, внутренний... Есть ли ответы на, например,
>ping... Куда они уходят - не на DGW вместо ipsec, случаем?
>

Удаленный Одмин таки все сделал. Что там у себя он подправил - нет возможности посмотреть, но у нас он сделал следующее - закрыл наттирование для локальной сети в случае, если это удаленная локальная сеть и изменил свойства ipsec. Ну и еще порезал лишние (они стали не нужны фильтры). В итоге у нас только IPF и IPNAT, а в осадке:

#rc.conf:
static_routes="vpn"
route_vpn="10.198.3.0 xxx.xxx.xxx.xxx 255.255.255.0"
export route_vpn

#ipsec.conf
spdadd 192.168.159.0/24 10.198.3.0/24 any -P out ipsec
esp/tunnel/yyy.yyy.yyy.yyy-xxx.xxx.xxx.xxx/unique;
spdadd 10.198.3.0/24 192.168.159.0/24 any -P in  ipsec
esp/tunnel/xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy/unique;

§ipnat.rules
map fxp0 from 192.168.159.0/24 to !10.198.3.0/24 -> 0/32

Может кому понадобится эта инфа?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "HowTo ? IPSec FreeBSD client -> Linux FreeS/WAN "  +/
Сообщение от grey_olli on 21-Май-09, 05:04 
>[оверквотинг удален]
>#ipsec.conf
>spdadd 192.168.159.0/24 10.198.3.0/24 any -P out ipsec
>esp/tunnel/yyy.yyy.yyy.yyy-xxx.xxx.xxx.xxx/unique;
>spdadd 10.198.3.0/24 192.168.159.0/24 any -P in  ipsec
>esp/tunnel/xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy/unique;
>
>╖ipnat.rules
>map fxp0 from 192.168.159.0/24 to !10.198.3.0/24 -> 0/32
>
>Может кому понадобится эта инфа?

Я бы с удовольствием глянул на пошаговое howto связки linux и freebsd с инициатором соединения со стороны linux. Гугль больше выдает про linux как vpn сервер. А вот смотреть на историю исправления глюков не будучи уверенным что в конечном варианте все указано без пропусков и подразумеваний, что все, что не указано тут есть выше - не тянет - лучше погуглю что нить внятное, чем вникать в таком виде оформленную инфу. Но если соберетесь запостить step by step с правильными конфигами без пропусков и минимумом комментариев по отладке - люди оценят. Для примера гляньте на мое howto по поднятию vpn на cisco asa писанное для себя, но тем не мене вероятно полезное для новичков: http://grey-olli.livejournal.com/tag/vpn+howto+on+cisco+asa .

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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