Jump to content
KorDen

Strongswan - когда захотелось нестандартного...

Recommended Posts

Пытаюсь запустить Strongswan из Entware-3x на Ultra II, для начала повторяя текущие настройки из прошивки.

Прошивочный говорит что у него

loaded plugins: charon random nonce openssl
                hmac attr kernel-netlink socket-default stroke updown eap-
                mschapv2 eap-dynamic xauth-generic xauth-eap error-notify
                systime-fix unity

Поставим что-то навроде, без eap:

Скрытый текст

strongswan - 5.5.1-2
strongswan-charon - 5.5.1-2
strongswan-mod-attr - 5.5.1-2
strongswan-mod-hmac - 5.5.1-2
strongswan-mod-kernel-netlink - 5.5.1-2
strongswan-mod-nonce - 5.5.1-2
strongswan-mod-openssl - 5.5.1-2
strongswan-mod-random - 5.5.1-2
strongswan-mod-socket-default - 5.5.1-2
strongswan-mod-stroke - 5.5.1-2
strongswan-mod-unity - 5.5.1-2
strongswan-mod-updown - 5.5.1-2
strongswan-mod-xauth-generic - 5.5.1-2
strongswan-utils - 5.5.1-2

 

Сделаем соединение, для начала с пассфразой (копия прошивочного):

Скрытый текст

conn test
    type=transport
    keyexchange=ikev2
    authby=psk
    ike=aes128-sha1-modp2048!
    esp=aes128-sha1-modp2048!
    left=1.2.3.4
    leftsubnet=1.2.3.4[4]
    leftid=e@e.a
    right=5.6.7.8
    rightsubnet=5.6.7.8[4]
    rightid=v@v.a
    auto=start

 

Теперь начинается интересное: по-умолчанию загружен модуль esp4_hw - при запуске естественно ругается что не может подгрузить esp4, но работает, причем с аппаратным ускорением!

charon: 11[IKE] CHILD_SA test{1} established with SPIs cef20fca_i ca0394c8_o and TS 1.2.3.4/32[ipencap] === 5.6.7.8/32[ipencap]
ndm: kernel: EIP93: build outbound ESP connection, (SPI=cadc4717)
ndm: kernel: EIP93: build  inbound ESP connection, (SPI=cef20fca)

Главное не забыть в фаерволе вручную разрешить входящие ESP (и, возможно, UDP/500; UDP/4500)

 

Но стоит выгрузить esp4_hw и загрузить esp4 - при запуске и попытке пинга (т.е. при установке ESP) роутер вообще уходит в ребут :( Меня конечно в первую очередь интересует работа с EIP93, но если вдруг что-то из желаемого на нем не взлетит, хотелось бы иметь возможности протестировать без него.

Edited by KorDen
  • Thanks 1

Share this post


Link to post
Share on other sites

У меня StrongSwan на роутере работает в качестве клиента. Роутер натит весь траффик из локальной сети в тоннель.

При esp=aes128-sha2_256-modp4096 почти выдает заявленные провайдером 100Mbit.

У вас траффик натится в тоннель или маршрутизируется? Как боретесь с тем, что ndms перезаписывает правила iptables для IPSec?

Share this post


Link to post
Share on other sites

@yoman, нат можно отключить - делаете 'no ip nat Home' а дальше задаете что куда натить через ip static (типа ip static Home ISP). У меня IPsec в транспортном режиме, весь траффик ходит по IPIP-туннелям

44 минуты назад, yoman сказал:

При esp=aes128-sha2_256-modp4096 почти выдает заявленные провайдером 100Mbit.

А нагрузка на проц при этом какая, т.е. у вас тоже аппаратный криптомодуль работает без проблем, насколько я понимаю?

Share this post


Link to post
Share on other sites

2 часа назад, KorDen сказал:

@yoman, нат можно отключить - делаете 'no ip nat Home' а дальше задаете что куда натить через ip static (типа ip static Home ISP). У меня IPsec в транспортном режиме, весь траффик ходит по IPIP-туннелям

А нагрузка на проц при этом какая, т.е. у вас тоже аппаратный криптомодуль работает без проблем, насколько я понимаю?

Проблема, в том, что StrongSwan в режиме клиента поднимает alias на eth3. Таким образом у меня на внешнем интерефейсе IP от провайдера и IP, полученный от сервера StrongSwan, в который и нужно натить трафиик. Сейчас нат приписывается скриптом _updown из плагина updown. Проблемы начинают возникать, когда кинетик переходит на резервный канал на модеме 4G, а правила iptables остаются с натом на ethernet. Приходится отлавливать это переключение скриптами. Кстати, встроенный ping checker зачем-то для каждой своей проверки переписывает все правила iptables, поэтому пришлось отказаться от встроенного механизма резервирования канала и писать свои скрипты.

'no ip nat home' решит для меня задачу не пускать клиентов в инет, пока не запустится StrongSwan

При включенном аппаратном криптомодуле и скорости ококло 80-90 Mbit softirq около 50%

Edited by yoman

Share this post


Link to post
Share on other sites

В 08.05.2017 в 00:12, KorDen сказал:

работает, причем с аппаратным ускорением!

Это как раз не удивительно. EIP93 включается в работу, как только по IPSec пробежит первый знакомый для него пакет.

Share this post


Link to post
Share on other sites

25 минут назад, Александр Рыжов сказал:

Это как раз не удивительно. EIP93 включается в работу, как только по IPSec пробежит первый знакомый для него пакет.

Я думал, придется пересобирать strongswan с esp4_hw.ko, ведь там жестко забит esp4.ko, на практике же он только при запуске ругается что не может подгрузить, но не валится при этом,

 

3 часа назад, yoman сказал:

Проблемы начинают возникать, когда кинетик переходит на резервный канал на модеме 4G, ... Кстати, встроенный ping checker зачем-то для каждой своей проверки переписывает все правила iptables, поэтому пришлось отказаться от встроенного механизма резервирования канала и писать свои скрипты.

Да, с резервированием все очень печально, я сам с этим столкнулся (вначале с бесконечной перезаписью правил, затем со сложностями работа прошивочного IPsec за нат, если не использовать автоматические туннели) - пока без авторезервирования, думаю как все лучше реализовать.

Share this post


Link to post
Share on other sites

42 минуты назад, KorDen сказал:

Да, с резервированием все очень печально, я сам с этим столкнулся (вначале с бесконечной перезаписью правил, затем со сложностями работа прошивочного IPsec за нат, если не использовать автоматические туннели) - пока без авторезервирования, думаю как все лучше реализовать.

У меня примерно следующее:

1. monitor.sh, который пингует хосты через туннель, если что-то не так, то пингует напрямую. Если не удалось никак пропинговать, то меняет маршрут на модем и перезапускает StrongSwan

2. Второй скрипт положил в wan.d, таким образом при пропадании линка, также меняет маршрут на модем и перезапускает ipsec.

3. Третий скрипт отсеживает появление инета на основном канале и переключает все обратно...

Ну и поверх всего этого еще скрипт, который мониторит правила iptables.

Сейчас вот отлаживаю, чтобы все запускалось в правильном порядке.

Share this post


Link to post
Share on other sites

В 5/8/2017 в 00:12, KorDen сказал:

Пытаюсь запустить Strongswan из Entware-3x на Ultra II, для начала повторяя текущие настройки из прошивки.

Прошивочный говорит что у него


loaded plugins: charon random nonce openssl
                hmac attr kernel-netlink socket-default stroke updown eap-
                mschapv2 eap-dynamic xauth-generic xauth-eap error-notify
                systime-fix unity

Поставим что-то навроде, без eap:

  Показать содержимое

Сделаем соединение, для начала с пассфразой (копия прошивочного):

  Показать содержимое

Теперь начинается интересное: по-умолчанию загружен модуль esp4_hw - при запуске естественно ругается что не может подгрузить esp4, но работает, причем с аппаратным ускорением!


charon: 11[IKE] CHILD_SA test{1} established with SPIs cef20fca_i ca0394c8_o and TS 1.2.3.4/32[ipencap] === 5.6.7.8/32[ipencap]
ndm: kernel: EIP93: build outbound ESP connection, (SPI=cadc4717)
ndm: kernel: EIP93: build  inbound ESP connection, (SPI=cef20fca)

Главное не забыть в фаерволе вручную разрешить входящие ESP (и, возможно, UDP/500; UDP/4500)

 

Но стоит выгрузить esp4_hw и загрузить esp4 - при запуске и попытке пинга (т.е. при установке ESP) роутер вообще уходит в ребут :( Меня конечно в первую очередь интересует работа с EIP93, но если вдруг что-то из желаемого на нем не взлетит, хотелось бы иметь возможности протестировать без него.

Нужно выгружать сперва esp4_hw, а затем crypto_k, и только потом загружать esp4.

Share this post


Link to post
Share on other sites

В 09.05.2017 в 21:23, KorDen сказал:

Я думал, придется пересобирать strongswan с esp4_hw.ko, ведь там жестко забит esp4.ko, на практике же он только при запуске ругается что не может подгрузить, но не валится при этом,

 

Да, с резервированием все очень печально, я сам с этим столкнулся (вначале с бесконечной перезаписью правил, затем со сложностями работа прошивочного IPsec за нат, если не использовать автоматические туннели) - пока без авторезервирования, думаю как все лучше реализовать.

Ничего там не забито, он просто при старте пытается загрузить эти модули, и все: https://git.strongswan.org/?p=strongswan.git;a=blob;f=src/starter/netkey.c;h=b150d3e80beed726c944c1779268e847654c16fd;hb=HEAD#l47.

Можно даже racoon или libreswan использовать, все должно работать. Ядро в плане ускорителя никак не связано с userspace в данный момент.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...