URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 68654
[ Назад ]

Исходное сообщение
"Раздел полезных советов: IPSec туннель между Cisco и CentOS ..."

Отправлено auto_tips , 09-Июл-10 02:12 
Имеем:

1 Маршрутизатор Cisco 5510 ASA с реальным IP 1.1.1.1 (сеть XXX.XXX.0.0/24)
2. Маршрутизатор Linux CentOS 5.2 (ядро 2.6.18-92.el5) с установленным ipsec-tools-0.6.5-13.el5_3.1 и реальным IP 2.2.2.2 (сеть XXX.XXX.0.0/16)

++ Конфигурация на маршрутизаторе Cisco:

   crypto isakmp policy 5
    encr aes
    authentication pre-share
    group 2
    lifetime 3600
    hash sha
   !
   crypto isakmp key SECRETKEY address 2.2.2.2
   crypto ipsec security-association lifetime seconds 3600
   crypto ipsec transform-set GK esp-aes esp-sha-hmac
   crypto map IPSec 7 ipsec-isakmp
   set peer 2.2.2.2
   set transform-set GK
   set pfs group2
   match address 666
  !
  interface GigabitEthernet0/0.1
   ip address 1.1.1.1 255.255.255.224
   crypto map IPSec
  !
  ip route XXX.XXX.0.0 255.255.255.0 2.2.2.2
  access-list 666 remark asGK
  access-list 666 permit ip  XXX.XXX.0.0 0.0.255.255  XXX.XXX.0.0 0.0.0.255
  access-list 666 deny   ip any any


++ Конфигурация на машине с Linux CentOS:

/etc/sysconfig/network-scripts/ifcfg-ipsec0

   TYPE=IPSEC
   ONBOOT=yes
   IKE_METHOD=PSK
   IKE_PSK=SECRETKEY
   IKE_DHGROUP=2
   ESP_PROTO=aes
   AH_PROTO=none
   AESP_PROTO=hmac-sha1
   SRC=2.2.2.2
   SRCGW=XXX.XXX.0.100
   DSTGW=1.1.1.1
   SRCNET=XXX.XXX.0.0/24
   DSTNET=XXX.XXX.0/16
   DST=1.1.1.1


/etc/racoon/racoon.conf

   path include "/etc/racoon";
   path pre_shared_key "/etc/racoon/psk.txt";
   log notify;

   listen
   {
      isakmp 2.2.2.2 [500];
   }

   sainfo address  XXX.XXX.0.0/24 any address XXX.XXX.0.0/16 any
   {
       pfs_group 2;
       lifetime time 6400 sec;
       encryption_algorithm aes;
       authentication_algorithm hmac_sha1;
       compression_algorithm deflate;
   }


и не забываем про iptables!!

после настройки

   #ifup ipsec0

после поднятия ipsec0 можно посмотреть есть ли туннель

   #setkey -D

   2.2.2.2 1.1.1.1
       esp mode=tunnel spi=3839224802(0xe4d5ebe2) reqid=0(0x00000000)
       E: aes-cbc  c98674dd c1cda3a8 36f39eb5 84fd56b4 192e4acd 7ad470d7 0176919b c955cc38
       A: hmac-sha1  d8e6305b 8b0352ab 249d125f 1515e6a8 136d8896
       seq=0x00000000 replay=4 flags=0x00000000 state=mature
       created: Jul  8 10:19:23 2010 current: Jul  8 10:44:57 2010
       diff: 1534(s)   hard: 86400(s)  soft: 69120(s)
       last: Jul  8 10:19:27 2010    hard: 0(s)        soft: 0(s)
       current: 2160(bytes)    hard: 0(bytes)  soft: 0(bytes)
       allocated: 18   hard: 0 soft: 0
       sadb_seq=1 pid=8863 refcnt=0
   1.1.1.1 2.2.2.2
       esp mode=tunnel spi=111533039(0x06a5dbef) reqid=0(0x00000000)
       E: aes-cbc  3e1f5040 cf6c15d2 8083dc28 aa6006ef df53337f 13b31da2 2782ef5c e46d3567
       A: hmac-sha1  a9553dd3 e9b431a5 534baef8 a2b1f34b cc2b8867
       seq=0x00000000 replay=4 flags=0x00000000 state=mature
       created: Jul  8 10:19:23 2010 current: Jul  8 10:44:57 2010
       diff: 1534(s)   hard: 86400(s)  soft: 69120(s)
       last: Jul  8 10:19:27 2010    hard: 0(s)        soft: 0(s)
       current: 833(bytes)     hard: 0(bytes)  soft: 0(bytes)
       allocated: 18   hard: 0 soft: 0
       sadb_seq=0 pid=8863 refcnt=0


Ссылки:
       http://www.opennet.me/base/cisco/cisco_ipsec_freebsd.txt.html (очень помогла эта статья)
       http://netbsd.gw.com/cgi-bin/man-cgi?racoon++NetBSD-current


URL:
Обсуждается: http://www.opennet.me/tips/info/2408.shtml


Содержание

Сообщения в этом обсуждении
"IPSec туннель между Cisco и CentOS Linux"
Отправлено sHaggY_caT , 09-Июл-10 02:12 
Как раз сегодня немного по-мучалась с настройкой IPSec :(

Скажите, у Вас на этой машине

2. Маршрутизатор Linux CentOS 5.2 (ядро 2.6.18-92.el5) с установленным
ipsec-tools-0.6.5-13.el5_3.1 и реальным IP 2.2.2.2 (сеть XXX.XXX.0.0/16)


Есть NAT для локальной сети? Если да, не могли бы показать правила?


"IPSec туннель между Cisco и CentOS Linux"
Отправлено PsV , 09-Июл-10 10:15 
Добрый день..

НАТ есть!!!


-A POSTROUTING -o vlan115 -j jstNET
-A jstNET -s 2.2.2.X/255.255.255.248 -j RETURN
-A jstNET -s 2.2.2.2 -j RETURN
-A jstNET -s XXX.XXX.0.0/255.255.255.0 -j SNAT --to-source 2.2.2.2
-A jstNET -j DROP


"IPSec туннель между Cisco и CentOS Linux"
Отправлено adm , 09-Июл-10 03:59 
> Есть NAT для локальной сети? Если да, не могли бы показать правила?

лучше вы покажите свои а вам укажут на их недостатки


"IPSec туннель между Cisco и CentOS Linux"
Отправлено sHaggY_caT , 09-Июл-10 16:47 
>> Есть NAT для локальной сети? Если да, не могли бы показать правила?
>
>лучше вы покажите свои а вам укажут на их недостатки

"Классическая", судя по гуглю, грабля с совмещением, за одним IP, NAT и ipsec.

Когда убирается NAT, работает IPsec туннель (между двумя офисами, в другом тоже NAT)
Когда NAT возвращается, Ipsec больше не работает.


[root@XXX network-scripts]# cat ifcfg-ipsec1
#IPSEC iface
DEVICE=ipsec1
TYPE=IPsec
IKE_METHOD=PSK
IKE_PSK=***

ONBOOT=no
SRCNET=10.XX.2.0/24
DSTNET=10.XX.3.0/24
DST=XX.XX.XX.XX
IPV6INIT=no

Где DST удаленный сервер с LAN 10.XX.3.0/24

[root@XXX network-scripts]# cat /etc/racoon/racoon.conf
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}


Причем, достаточно отключить NAT только с той стороны, с которой пытаемся подключиться по IPSec:

===================
# Generated by iptables-save v1.3.5 on Fri Jul  9 16:42:38 2010
*mangle
:PREROUTING ACCEPT [2308398:1423237106]
:INPUT ACCEPT [173359:34702081]
:FORWARD ACCEPT [2134460:1388509687]
:OUTPUT ACCEPT [175649:19916950]
:POSTROUTING ACCEPT [2310109:1408426637]
COMMIT
# Completed on Fri Jul  9 16:42:38 2010
# Generated by iptables-save v1.3.5 on Fri Jul  9 16:42:38 2010
*nat
:PREROUTING ACCEPT [81100:4924860]
:POSTROUTING ACCEPT [2158:106381]
:OUTPUT ACCEPT [6000:364839]
-A PREROUTING -d YY.YY.YY.YY -i eth0 -p udp -m udp --dport 3333 -j DNAT --to-destination 10.XX.2.3:3333
-A POSTROUTING -o eth0 -j SNAT --to-source YY.YY.YY.YY
COMMIT
# Completed on Fri Jul  9 16:42:38 2010
# Generated by iptables-save v1.3.5 on Fri Jul  9 16:42:38 2010
*filter
:INPUT DROP [2709:353265]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [174990:19866804]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s XX.XX.XX.XX -i vmbr0 -j ACCEPT
-A INPUT -s XX.XX.XX.XX -i eth0 -j ACCEPT
-A INPUT -s ZZ.ZZ.ZZ.ZZ -i vmbr0 -j ACCEPT
-A INPUT -s ZZ.ZZ.ZZ.ZZ -i eth0 -j ACCEPT
-A INPUT -s 10.XX.3.0/255.255.255.0 -i vmbr0 -j ACCEPT
-A INPUT -s 10.XX.3.0/255.255.255.0 -i eth0 -j ACCEPT
-A INPUT -s 10.XX.2.0/255.255.255.0 -i vmbr0 -j ACCEPT
-A INPUT -s 10.XX.2.0/255.255.255.0 -i eth0 -j ACCEPT
-A INPUT -d YY.YY.YY.YY -p udp -m udp --dport 113 -j ACCEPT
-A INPUT -d YY.YY.YY.YY -p tcp -m tcp --dport 113 -j ACCEPT
-A INPUT -s XX.XX.XX.XX -i ipsec1 -j ACCEPT
-A FORWARD -s 10.XX.2.2 -o eth0 -p tcp -m tcp --dport 25 -j DROP
-A FORWARD -s 10.XX.2.2 -j ACCEPT
-A FORWARD -d 10.XX.2.2 -j ACCEPT
-A FORWARD -s 10.XX.2.3 -o eth0 -p tcp -m tcp --dport 25 -j DROP
-A FORWARD -s 10.XX.2.3 -j ACCEPT
-A FORWARD -d 10.XX.2.3 -j ACCEPT
-A FORWARD -s 10.XX.2.1 -o eth0 -p tcp -m tcp --dport 25 -j DROP
-A FORWARD -s 10.XX.2.1 -j ACCEPT
-A FORWARD -d 10.XX.2.1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s XX.XX.XX.XX -i vmbr0 -j ACCEPT
-A FORWARD -s XX.XX.XX.XX -i eth0 -j ACCEPT
-A FORWARD -s ZZ.ZZ.ZZ.ZZ -i vmbr0 -j ACCEPT
-A FORWARD -s ZZ.ZZ.ZZ.ZZ -i eth0 -j ACCEPT
-A FORWARD -s 10.XX.3.0/255.255.255.0 -i vmbr0 -j ACCEPT
-A FORWARD -s 10.XX.3.0/255.255.255.0 -i eth0 -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -i vmbr0 -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -i eth0 -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -d 10.XX.3.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 10.XX.3.0/255.255.255.0 -d 10.XX.2.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -i vmbr0 -p tcp -m tcp --dport 25 -j DROP
-A FORWARD -s 10.XX.3.0/255.255.255.0 -i vmbr0 -p tcp -m tcp --dport 25 -j DROP
-A FORWARD -s 10.XX.2.0/255.255.255.0 -i vmbr0 -p ! icmp -m state --state INVALID -j DROP
-A FORWARD -d 10.XX.2.0/255.255.255.0 -o vmbr0 -p ! icmp -m state --state INVALID -j DROP
-A FORWARD -s 10.XX.2.0/255.255.255.0 -i vmbr0 -o eth0 -j ACCEPT
-A FORWARD -d 10.XX.2.0/255.255.255.0 -i vmbr0 -p icmp -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -o vmbr0 -p icmp -j ACCEPT
-A FORWARD -s 10.XX.3.0/255.255.255.0 -i vmbr0 -p ! icmp -m state --state INVALID -j DROP
-A FORWARD -d 10.XX.3.0/255.255.255.0 -o vmbr0 -p ! icmp -m state --state INVALID -j DROP
-A FORWARD -s 10.XX.3.0/255.255.255.0 -i vmbr0 -o eth0 -j ACCEPT
-A FORWARD -d 10.XX.3.0/255.255.255.0 -i vmbr0 -p icmp -j ACCEPT
-A FORWARD -s 10.XX.3.0/255.255.255.0 -o vmbr0 -p icmp -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -d 10.XX.2.1 -j ACCEPT
-A FORWARD -s 10.XX.2.1 -d 10.XX.2.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 10.XX.2.1 -o eth0 -j ACCEPT
-A FORWARD -s 10.XX.2.1 -j DROP
-A FORWARD -d 10.XX.2.1 -j DROP
-A FORWARD -d 10.XX.2.3 -p udp -m udp --dport 3333 -j ACCEPT
-A FORWARD -s 10.XX.2.0/255.255.255.0 -d 10.XX.2.3 -j ACCEPT
-A FORWARD -s 10.XX.2.3 -d 10.XX.2.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 10.XX.2.3 -o eth0 -j ACCEPT
-A FORWARD -s 10.XX.2.3 -j DROP
-A FORWARD -d 10.XX.2.3 -j DROP
-A FORWARD -s 10.XX.2.0/255.255.255.0 -d 10.XX.2.2 -j ACCEPT
-A FORWARD -s 10.XX.2.2 -d 10.XX.2.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 10.XX.2.2 -o eth0 -j ACCEPT
-A FORWARD -s 10.XX.2.2 -j DROP
-A FORWARD -d 10.XX.2.2 -j DROP
COMMIT
# Completed on Fri Jul  9 16:42:38 2010


eth0      Link encap:Ethernet  HWaddr *******  
          inet addr:YY.YY.YY.YY  Bcast:**  Mask:255.255.255.224
          inet6 addr: *** Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1188158 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1233850 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:841302073 (802.3 MiB)  TX bytes:638793363 (609.2 MiB)
          Interrupt:233 Base address:0xe000

eth1      Link encap:Ethernet  HWaddr ******
          inet6 addr: *** Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:925132 errors:0 dropped:0 overruns:0 frame:0
          TX packets:885383 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:585542509 (558.4 MiB)  TX bytes:755864016 (720.8 MiB)
          Memory:f3180000-f31a0000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:5410 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5410 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:679230 (663.3 KiB)  TX bytes:679230 (663.3 KiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:321997 errors:0 dropped:0 overruns:0 frame:0
          TX packets:277237 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:102789055 (98.0 MiB)  TX bytes:113665818 (108.4 MiB)

veth101.0 Link encap:Ethernet  HWaddr *****
          inet6 addr: *** Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27757 errors:0 dropped:14 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:55524 (54.2 KiB)  TX bytes:4915275 (4.6 MiB)

vmbr0     Link encap:Ethernet  HWaddr *****
          inet addr:10.XX.2.5  Bcast:10.XX.2.255  Mask:255.255.255.0
          inet6 addr: *** Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:903585 errors:0 dropped:0 overruns:0 frame:0
          TX packets:885284 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:568370681 (542.0 MiB)  TX bytes:755850406 (720.8 MiB)

В общем-то, думала уже все сделать на OpenVPN, так как использовать для NAT и ipsec разные IP-адреса технически сложно: обе машины, OpenVZ системы, а в OVZ с venet сетью для default gateway куча заморочек, если шлюзов больше одного, но если подскажете, буду благодарна.


"IPSec туннель между Cisco и CentOS Linux"
Отправлено Andrew Kolchoogin , 12-Июл-10 15:40 
Уй как многа букаф...

Вообще говоря, в Cisco, если из одного интерфейса уходит IP Security и NAT, в route-map, управляющий NAT'ом, необходимо вносить NAT Exemption. Иначе IPSec Tunnel работать не будет.

IMHO в любом другом IPSec Node необходимо делать то же самое.


"IPSec туннель между Cisco и CentOS Linux"
Отправлено sHaggY_caT , 15-Июл-10 03:28 
>Уй как многа букаф...

Да, мне многие, особенно при личном общении, говорили, что общаться можно и короче :)

>Вообще говоря, в Cisco, если из одного интерфейса уходит IP Security и
>NAT, в route-map, управляющий NAT'ом, необходимо вносить NAT Exemption. Иначе IPSec
>Tunnel работать не будет.
>
>IMHO в любом другом IPSec Node необходимо делать то же самое.

Вносила исключения сотней разных способов(и по протоколу и по destination сети) для NAT, понятно, что-то делаю не так, но так и не заработало :(
Помогает только убрать NAT для source сети.

Если бы кто-то поделился рабочим примером, была бы благодарна.


"IPSec туннель между Cisco и CentOS Linux"
Отправлено Filosof , 09-Июл-10 10:45 
Не так давно ставилась подобная задача, но нашлись более приоритетные...
До сих пор интересна рализация. Спосибо. По возможности применим.

Правда у нас немножко интересней: нужно чтоб оно паралельно работало с тунелем на ту же асу но установленным с циски. А циска эта находится в той же подсетке, что и центось. При чём что с наружи, что изнутри.
Когда я последний раз этим занимался - вбил настройки для Центоси в асу - лёг тунель на циску (полагаю там роутинги и аксес листы править надо).


"IPSec туннель между Cisco и CentOS Linux"
Отправлено m_art , 09-Июл-10 17:47 
В данном примере, как практичиский везде где я искал, тунель строится между двумя северами, за каждым из которых всего по одной сети. Настраивали похожую схему, но к циске был подключен еще один офис и присутсвовала необходимость прохождения трафика офис на линуксе(192.168.1.0/24) ---> офис с циской(172.16.0.0/16) ---> офис на линуксе(192.168.2.0/24).
Соответсвенно в racoon.conf присутсвовал "отбор" трафика для двух сетей 172.16.0.0 и для 192.168.2.0. Проблема заключалась в следущем:
Генерировался трафик из 192.168.1.0/24 в 172.16.0.0/16, тунель поднимался. Потом
генерировался трафик из 192.168.1.0/24 в 192.168.2.0/24, и ракун видя что трафик "его" начиинал строить тунель, но трафик не проходил. В логах появлялась ошибка что фаза2 закончилась неудачно, недождавшись фазы1.
Если остановить трафик в первую сеть, дождатся когда тунель ляжет по таймауту и организовать трафик во вторую сеть, то тунель нормально поднимается. То есть трафик мог ходить и в одну и во вторую сеть, но только не одновременно.
В случае построения тунеля между двумя цисками, трафик замечательно ходит в несколько сетей одновременно.
Извиняюсь что не могу конфиги и логи показать, так возможно проще бы воспринималось что я тут понаписал, но я настраивал это все пару месяцев назад и уже все потер.
Кто нибудь сталкивался с подобной проблемой и есть ли рабочее решение?

"IPSec туннель между Cisco и CentOS Linux"
Отправлено m_art , 11-Авг-10 14:02 
Вот практически такая же проблема, когда из офиса1 в офис2, в тунель надо запихнуть больше чем одну сеть.
http://forums.avalon.ru/forum/topic.asp?TOPIC_ID=10023

"IPSec туннель между Cisco и CentOS Linux"
Отправлено Nikolaev D , 14-Июл-10 16:45 
на freebsd делал.
никаких граблей с натами.