IPsec туннель с Solaris 10.. чего мне не хватает?

Вопрос или проблема

Я хочу создать два туннеля Solaris10, зашифрованных с помощью IPsec. Конфигурация проста: 2 узла Solaris10, LAN не зашифрован, туннель зашифрован. LAN — это e1000g0, а туннель — ip.tun0. IP “очистки” для узла1 — 192.168.0.21, IP “очистки” для узла2 — 192.168.0.199. Я выполняю эту процедуру.

a) Включил пересылку IPv4 и маршрутизацию на обоих узлах.

routeadm -u -e ipv4-routing
routeadm -u -e ipv4-forwarding

b) Отредактировал /etc/inet/ike/config на обоих узлах.

p1_xform
  { auth_method preshared oakley_group 5 auth_alg sha encr_alg 3des }
p2_pfs 2

c) Отредактировал /etc/inet/secret/ike.preshared на обоих узлах, конечно, с обратными локальными/удаленными адресами.

{ localidtype IP
    localid 192.168.0.21
    remoteidtype IP
    remoteid 192.168.0.119
  }

d) Включил IKE на обоих узлах, svcs confirm работает.

svcadm enable ike
svcs ike

e) Отредактировал файл /etc/inet/ipsecinit.conf.

# Трафик LAN от и к этому хосту может обходить IPsec.
{laddr 192.168.0.0 dir both} bypass {}

# Трафик WAN использует ESP с AES и SHA-1.
{tunnel ip.tun0 negotiate tunnel}
 ipsec {encr_algs aes encr_auth_algs sha1 sa shared}

f) Обновил..

svcadm refresh ipsec/policy

g) Кажется, все в порядке, поэтому я создаю туннель.

svcs -a|grep -i ipsec
disabled        9:35:34 svc:/network/ipsec/manual-key:default
online          9:35:53 svc:/network/ipsec/ipsecalgs:default
online          9:35:53 svc:/network/ipsec/ike:default
online          9:54:38 svc:/network/ipsec/policy:default

На HostA

ifconfig ip.tun0 plumb
ifconfig ip.tun0 192.168.192.24 192.168.192.40 tsrc 192.168.0.21 tdst 192.168.0.199 router up

На HostB

ifconfig ip.tun0 plumb
ifconfig ip.tun0 192.168.192.40 192.168.192.24 tsrc 192.168.0.199 tdst 192.168.0.21 router up

Кажется, все ОК, но… не работает.

HostA может пинговать HostB.

ping 192.168.0.199
192.168.0.199 жив

HostB может пинговать HostA.

ping 192.168.0.2
192.168.0.2 жив

Но если я пингую туннель…

С HostA на HostB

ping -s 192.168.192.40
PING 192.168.192.40: 56 data bytes
----192.168.192.40 PING Statistics----
25 packets transmitted, 0 packets received, 100% packet loss

С HostB на HostA

ping -s 192.168.192.24
PING 192.168.192.24: 56 data bytes
----192.168.192.24 PING Statistics----
25 packets transmitted, 0 packets received, 100% packet loss

На hostA netstat -rn говорит:

netstat -rn
Routing Table: IPv4
  Destination           Gateway           Flags  Ref     Use     Interface 
-------------------- -------------------- ----- ----- ---------- --------- 
default              192.168.0.1          UG        1          1           
192.168.0.0          192.168.0.21         U         1          3 e1000g0   
192.168.192.40       192.168.192.24       UH        1          0 ip.tun0   
224.0.0.0            192.168.0.21         U         1          0 e1000g0   
127.0.0.1            127.0.0.1            UH        1         48 lo0   

На HostB netstat -rn говорит:

Routing Table: IPv4
  Destination           Gateway           Flags  Ref     Use     Interface 
-------------------- -------------------- ----- ----- ---------- --------- 
default              192.168.0.1          UG        1          2 e1000g0   
192.168.0.0          192.168.0.199        U         1          7 e1000g0   
192.168.192.24       192.168.192.40       UH        1          1 ip.tun0   
127.0.0.1            127.0.0.1            UH        3        122 lo0 

Что я пропустил? Файрвол отключен на обоих узлах.

Решение найдено. Ошибка была в синтаксисе многих конф. файлов. Сначала файл.

/etc/inet/secret/ike.preshared 

должен выглядеть так, IP для использования должен быть IP туннеля, а не IP “основного” интерфейса.

# ike.preshared на hostA
#…
{ localidtype IP
    localid 10.4.0.1
    remoteidtype IP
    remoteid 10.4.0.2
    key keyinhexformat
    # Предварительно общий ключ также может быть представлен в шестнадцатеричном формате 
# как в 0xf47cb0f432e14480951095f82b
# key "Это ASCII ключевое слово, используйте надежные техники паролей"
}

Чтобы сгенерировать ключ в шестнадцатеричном формате, используйте эту команду:

echo "mypassword" | od -t x1|head -1|tr -d ' '

Файл

/etc/inet/ike/config

должен быть подобен этому, даже в этом случае используйте IP туннеля, а не IP основного интерфейса.

p1_xform
  { auth_method preshared oakley_group 5 auth_alg sha encr_alg 3des }
p2_pfs 2
{ label "test1-test2" local_addr 10.4.0.1 remote_addr 10.4.0.2 p1_xform { auth_method preshared oakley_group 5 auth_alg sha256 encr_alg aes } p2_pfs 5 }

Конечно, на hostB должны быть обратные 10.4.0.1 и 10.4.0.2 для обоих файлов.

В конечном итоге отредактируйте файл /etc/inet/ipsecinit.conf.

{laddr 192.168.0.21 dir both} bypass {}
{laddr 10.4.0.1 raddr 10.4.0.2} ipsec {encr_algs aes encr_auth_algs sha256 sa shared}

Конечно, на hostB должны быть обратные 10.4.0.1 и 10.4.0.2, и 192.168.0.21 должен быть заменен на основной IP hostB.

Теперь запустите сценарий на hostA.

ifconfig ip.tun0 unplumb
ifconfig ip.tun0 plumb
ifconfig ip.tun0 10.4.0.1  10.4.0.2 netmask 255.255.255.0 tsrc 192.168.0.21 tdst 192.168.0.199 router up
for i in ike ipsec/policy;do svcadm refresh $i; done

Теперь запустите сценарий на hostB.

ifconfig ip.tun0 unplumb
    ifconfig ip.tun0 plumb
    ifconfig ip.tun0 10.4.0.2  10.4.0.1 netmask 255.255.255.0 tsrc 192.168.0.199 tdst 192.168.0.21 router up
    for i in ike ipsec/policy;do svcadm refresh $i; done

И все работает, тестируйте с помощью ping и snoop.

Ответ или решение

Подключение IPsec-туннеля на Solaris 10: Анализ и Решение Проблемы

Вопрос о настройке IPsec-туннеля между двумя узлами Solaris 10 поднимает несколько аргументов, касающихся предварительной конфигурации и совместимости настроек. При рассмотрении нашей ситуации, описанной в вопросе, важно уделить внимание каждому этапу настройки, чтобы убедиться, что все шаги выполнены правильно. Давайте рассмотрим детали конфигурации и то, как исправить выявленные ошибки.

Анализ Проблемы

  1. Понимание Конфигурации Туннеля:
    Ваши узлы (HostA и HostB) были настроены для работы с туннелем через интерфейс ip.tun0, при этом каждый узел имел свои "чистые" IP-адреса. Однако при отправке пинга на туннельные IP-адреса не удавалось получить ответ. Это может быть связано с неправильной настройкой идентификаторов и интерфейсов.

  2. Ошибки в Конфигурации:
    Основная проблема заключалась в том, что в файлах конфигурации (/etc/inet/ike/config и /etc/inet/secret/ike.preshared) использовались не те IP-адреса. Вместо использования туннельных адресов (например, 192.168.192.24 и 192.168.192.40) вы должны использовать адреса туннеля (например, 10.4.0.1 и 10.4.0.2).

Корректировки и Рекомендации

  1. Настройка файла /etc/inet/secret/ike.preshared:
    В этом файле необходимо указать следующие параметры, включая ключи и адреса туннеля:

    { localidtype IP
       localid 10.4.0.1
       remoteidtype IP
       remoteid 10.4.0.2
       key keyinhexformat
    }

    Ключ можно сгенерировать с помощью команды:

    echo "mypassword" | od -t x1 | head -1 | tr -d ' '
  2. Настройка файла /etc/inet/ike/config:
    Здесь нужно отразить правильные адреса туннелей и шифрования:

    p1_xform
     { auth_method preshared oakley_group 5 auth_alg sha encr_alg 3des }
    p2_pfs 2
    { label "test1-test2" local_addr 10.4.0.1 remote_addr 10.4.0.2 p1_xform { auth_method preshared oakley_group 5 auth_alg sha256 encr_alg aes } p2_pfs 5 }
  3. Настройка файла /etc/inet/ipsecinit.conf:
    Обязательно указывать правильные адреса сетевых интерфейсов:

    {laddr 192.168.0.21 dir both} bypass {}
    {laddr 10.4.0.1 raddr 10.4.0.2} ipsec {encr_algs aes encr_auth_algs sha256 sa shared}
  4. Перезагрузка интерфейсов и служб:
    После внесения изменений не забудьте перезагрузить интерфейсы и службы IPsec:

    ifconfig ip.tun0 unplumb
    ifconfig ip.tun0 plumb
    ifconfig ip.tun0 10.4.0.1 10.4.0.2 netmask 255.255.255.0 tsrc 192.168.0.21 tdst 192.168.0.199 router up
    for i in ike ipsec/policy; do svcadm refresh $i; done

    И аналогичные команды на HostB, поменяв IP адреса местами.

Заключение

После выполнения данных шагов и корректировки конфигурации вы получите рабочий IPsec-туннель между двумя узлами Solaris 10. Всегда важно помнить, что при настройке подобных систем точность в конфигурациях и использование правильных IP-адресов критичны для успеха соединения. Применяйте на практике предложенные решения и проверяйте их работоспособность с помощью утилит, таких как ping или snoop, для диагностики сетевых проблем.

Оцените материал
Добавить комментарий

Капча загружается...