Jump to content
Alexey Lyahkov

Странные проблемы с ipip over IPSec.

Recommended Posts

После некоторой эксплуатации данной связки накопились проблемы.

1. Не возможность использовать policy routing в данной связке. ip policy принимает в конфиге и вебморде только "global" интерфейсы - ipip0 по какой-то причине этим не является. Фича или Бага? Выход из положения через Enterware и перебивание содержимого ip таблицы - мягко скажем не очень приятен.

 

2. Как не крути - Кинетик упорно делает NAT на ipip0 (no ip nat ipip0 естественно сделан). Найден вариант с 

#!/bin/sh

[ "$table" != "nat" ] && exit 0


iptables -t nat -I _NDM_MASQ_BYPASS -o ipip0 -j ACCEPT

Но как-то вот..

 

3. В качестве пожелания - сделать PBR через ipset а не через стопку одинаковых правил. И вам проще - и файрволу напрягаться меньше.

 

 

Share this post


Link to post
Share on other sites

17 минут назад, Alexey Lyahkov сказал:

После некоторой эксплуатации данной связки накопились проблемы.

1. Не возможность использовать policy routing в данной связке. ip policy принимает в конфиге и вебморде только "global" интерфейсы - ipip0 по какой-то причине этим не является. Фича или Бага? Выход из положения через Enterware и перебивание содержимого ip таблицы - мягко скажем не очень приятен.

 

2. Как не крути - Кинетик упорно делает NAT на ipip0 (no ip nat ipip0 естественно сделан). Найден вариант с 

#!/bin/sh

[ "$table" != "nat" ] && exit 0


iptables -t nat -I _NDM_MASQ_BYPASS -o ipip0 -j ACCEPT

Но как-то вот..

 

3. В качестве пожелания - сделать PBR через ipset а не через стопку одинаковых правил. И вам проще - и файрволу напрягаться меньше.

 

 

Выполните ip global  на ipip интерфейсе, и он станет работать с policy

Edited by r13

Share this post


Link to post
Share on other sites

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

ipip0 по какой-то причине этим не является

должен быть дефолтный маршрут (ip route default IPIP10 auto) и ip global на интерфейсе (interface IPIP10 ip global 123)

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

Кинетик упорно делает NAT на ipip0 (no ip nat ipip0 естественно сделан)

ip nat задается на src. Т.е. "ip nat Home" означает "натить из Home в любой исходящий интерфейс". Поэтому вам надо "натить из Home только в ISP", т.е. "no ip nat Home" и затем "ip static Home ISP"

Edited by KorDen

Share this post


Link to post
Share on other sites

1 час назад, Alexey Lyahkov сказал:

После некоторой эксплуатации данной связки накопились проблемы.

1. Не возможность использовать policy routing в данной связке. ip policy принимает в конфиге и вебморде только "global" интерфейсы - ipip0 по какой-то причине этим не является. Фича или Бага? Выход из положения через Enterware и перебивание содержимого ip таблицы - мягко скажем не очень приятен.

 

2. Как не крути - Кинетик упорно делает NAT на ipip0 (no ip nat ipip0 естественно сделан). Найден вариант с 

#!/bin/sh

[ "$table" != "nat" ] && exit 0


iptables -t nat -I _NDM_MASQ_BYPASS -o ipip0 -j ACCEPT

Но как-то вот..

 

3. В качестве пожелания - сделать PBR через ipset а не через стопку одинаковых правил. И вам проще - и файрволу напрягаться меньше.

 

 

IPset в качестве backend появился сильно позже PBR, потому не все компоненты переведены на него. Про остальное вам уже подсказали.

Share this post


Link to post
Share on other sites

2 hours ago, KorDen said:

ip nat задается на src. Т.е. "ip nat Home" означает "натить из Home в любой исходящий интерфейс". Поэтому вам надо "натить из Home только в ISP", т.е. "no ip nat Home" и затем "ip static Home ISP"

Простите - но дико не удобно. Когда у тебя больше пары интерфейсов - прийдется прописывать в конфиг MxN (m - гостевых, N - внешних) строк что бы описать что же и как натить.

И молиться что бы не одну из конфигураций не забыть 😕

Тогда как перечисление только тех где натить - дало бы в разы меньше строк. Я подозревал что прийдется делать ip static ... но похоже более простое решение это N строчек в _NDM_MASQ_BYPASS - для исключения интерфейсов где натить не нужно.

 

Share this post


Link to post
Share on other sites

2 hours ago, KorDen said:

должен быть дефолтный маршрут (ip route default IPIP10 auto) и ip global на интерфейсе (interface IPIP10 ip global 123)

3 hours ago, Alexey Lyahkov said:

(config)> ip route default IPIP0 auto
Network::RoutingTable error[5046298]: automatic default routes are invalid.
> show interface ipip0

               id: IPIP0
            index: 0
             type: IPIP
      description:
   interface-name: IPIP0
             link: up
        connected: yes
            state: up
              mtu: 65516
         tx-queue: 1
          address: 198.18.1.1
             mask: 255.255.255.252
           uptime: 12856
           global: yes
        defaultgw: no
         priority: 350
   security-level: private
tunnel-local-source: 198.18.0.1
tunnel-remote-destination: 198.18.0.2
    ipsec-enabled: no
ipsec-ikev2-allowed: yes
ipsec-ikev2-enabled: no

Share this post


Link to post
Share on other sites

5 минут назад, Alexey Lyahkov сказал:

automatic default routes are invalid

Да, ошибся, дефолтные маршруты надо без auto

25 минут назад, Alexey Lyahkov сказал:

прийдется прописывать в конфиг MxN

Ага :(

Share this post


Link to post
Share on other sites

спасибо, за подсказки! заработало адекватно.

хотелось еще PBR в виде - вот эти хосты ходят в интерфейс только если это не к этим адресам - но в тех местах где стоят кинетики - это наверно не нужно.

А в тике это было реализовано одним правилом с 2мя IPSET списками.

Share this post


Link to post
Share on other sites

@Le ecureuil маленькое дополнение по глюкам. Воспользовавшись советом default в ipip0 наткнулся на баго/фичу.

IPsec тунель не добавляет свой peer в роутинг на дефолтовый интерфейс. В результате ipsec тихо умирает и не может найти пира. Хотя show ip route видит default в нужный интерфейс 😕

Quote

> show ip route
================================================================================
Destination          Gateway           Interface                         Metric
================================================================================
0.0.0.0/0            100.68.91.1       ISP                               0
5.8.48.16/32         100.68.91.1       ISP                               0
10.1.30.0/24         0.0.0.0           Guest                             0
100.68.91.0/24       0.0.0.0           ISP                               0

 

Добавление руками адреса пира в роутинг решает проблему - но не кошерно :-) система должна сама это делать.

С туннельными адресами меня берет сомнение.. но выглядит как тоже надо бы добавить - во избежание глюков.

 

Edited by Alexey Lyahkov
добавил о туннельных адресах

Share this post


Link to post
Share on other sites

1 час назад, Alexey Lyahkov сказал:

@Le ecureuil маленькое дополнение по глюкам. Воспользовавшись советом default в ipip0 наткнулся на баго/фичу.

IPsec тунель не добавляет свой peer в роутинг на дефолтовый интерфейс. В результате ipsec тихо умирает и не может найти пира. Хотя show ip route видит default в нужный интерфейс 😕

 

Добавление руками адреса пира в роутинг решает проблему - но не кошерно :-) система должна сама это делать.

С туннельными адресами меня берет сомнение.. но выглядит как тоже надо бы добавить - во избежание глюков.

 

Не очень понимаю о чем вы. Лучше пример приведите.

Share this post


Link to post
Share on other sites

Хм.. вроде привел пример. Давайте еще раз.

1. По совету KorDen был сделан ip route add default ipip0 и через политику назначено 2м хостам в локалке.
ip route default IPIP0

2.  Через политику назначено некоторым хостам.

ip policy vpn-gw
    description vpn-gw
    permit global IPIP0

permit global Wireguard0
    permit global ISP
!

3. crypto map home2
    set-peer xxxxx.keenetic.name

 

..

----

Таблица роутинга как ее видел кинетик - я показал выше.

> show ip route
================================================================================
Destination          Gateway           Interface                         Metric
================================================================================
0.0.0.0/0            100.68.91.1       ISP                               0
5.8.48.16/32         100.68.91.1       ISP                               0
10.1.30.0/24         0.0.0.0           Guest                             0
100.68.91.0/24       0.0.0.0           ISP                               0

Устраиваем reboot.. ОПА.. и ipsec не поднимается - говорит не могу достучаться до пира.

I [Feb 15 10:00:58] ipsec: 12[IKE] retransmit 7 of request with message ID 0
I [Feb 15 10:01:14] ipsec: 10[IKE] retransmit 8 of request with message ID 0
I [Feb 15 10:01:31] ipsec: 10[IKE] giving up after 8 retransmits

I [Feb 15 10:01:31] ndm: IpSec::Configurator: "home2": schedule reconnect for crypto map.
I [Feb 15 10:01:31] ipsec: 10[IKE] establishing IKE_SA failed, peer not responding
 

делаем
ip route 31.28.251.xxx ISP

 

IPSEC поднимается, и вся схема работает. Получается по какой-то причине ipsec демон не может найти роутинг до пира.

Share this post


Link to post
Share on other sites

в смысле автоматический? вы имеете ввиду ipsec в туннельном режиме? Тогда прикиньте сколько нужно политик прописать когда с обоих сторон туннеля по 5-7 сетей. Я молчу о том что с другой стороны Mikrotik 4011 - как vpn шлюз. У того проблемы с несколькими сетями в рамках фазы 2 есть проблемы.

Или вы о l2tp ? 

Edited by Alexey Lyahkov

Share this post


Link to post
Share on other sites

1 час назад, Alexey Lyahkov сказал:

в смысле автоматический? вы имеете ввиду ipsec в туннельном режиме? Тогда прикиньте сколько нужно политик прописать когда с обоих сторон туннеля по 5-7 сетей. Я молчу о том что с другой стороны Mikrotik 4011 - как vpn шлюз. У того проблемы с несколькими сетями в рамках фазы 2 есть проблемы.

Или вы о l2tp ? 

Первый пост внимательно читали?

Share this post


Link to post
Share on other sites

Не будет работать в моем случае - по двум причинам.

1. На той стороне Mikrotik 4011 - к которому надо подбирать отдельные настройки. Возможно получится - возможно нет.

2. На стороне "клиента" - динамический "серый" адрес. В то время как ip tunnel ipip требует указания на обоих сторонах destination ip.

 

PS.  и все это что бы при создании ipsec peer не добавлять его адрес в роутинг.. собственно это больше для других кто наступит на эту же бяку.

Share this post


Link to post
Share on other sites

13 минуты назад, Alexey Lyahkov сказал:

Не будет работать в моем случае - по двум причинам.

1. На той стороне Mikrotik 4011 - к которому надо подбирать отдельные настройки. Возможно получится - возможно нет.

2. На стороне "клиента" - динамический "серый" адрес. В то время как ip tunnel ipip требует указания на обоих сторонах destination ip.

 

PS.  и все это что бы при создании ipsec peer не добавлять его адрес в роутинг.. собственно это больше для других кто наступит на эту же бяку.

1. Давайте попробуем, может норм будет?
2. Вообще побоку, в случае с IPsec это волновать никого не должно, как не волнует работа L2TP/IPsec клиента с серым IP через NAT. Зато получаете контроль за нижележащим интерфейсом, автоматическое объединение IPIP и IPsec в один уровень (отдельно IPsec незамеченным не отвалится), ну и роуты к удаленным пирам.

Share this post


Link to post
Share on other sites

попробую, но не гарантирую что это будет быстро. 

 

 

 

Кроме того отваливание интерфейса - меня волнует достаточно слабо. Как раз таки умирающий трафик был бы лучше - иначе пришлось быть делать отдельно blackhole для этих IP адресов. Ибо специфика доступа из Крыма к некоторым адресам на территории US.

PS. только сейчас обратил внимание что destination ip печатается криво в ifconfig ipip0

PPS. нашел таки роутинг на пира в ipip0 в 248 таблице

Edited by Alexey Lyahkov

Share this post


Link to post
Share on other sites

Но роутинг странный.

198.18.0.2 via 31.x.x.x dev eth3  table 248  proto static  src 198.18.0.1  mtu 1500 advmss 1460

адрес 31.x.x.x не является direct reachable для этого хоста - я честно удивлен что его дали добавить. Гораздо логичнее был адрес 100.x.x.1 который является шлюзом для этого кинетика для ISP интерфейса

 

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...