LINUX.ORG.RU

Сообщения pdn_mail

 

GRE/IPSEC over NAT

Форум — Admin

Здравствуйте! Прошу помощи.
Есть две сетки, которые надо объединить, вот рисунок стенда на виртуалках:
http://storage5.static.itmages.ru/i/17/0630/h_1498810708_4793632_a80ff27c8a.png
[host1 - H1]----[router R1 (nat)]-----[router R2]
Собственно пока требуется сделать самое простое - заставить работать GRE туннель между H1 и R2 поверх IPSEC через NAT. В качестве GRE туннеля используется протокол EoIP - https://code.google.com/archive/p/linux-eoip/
на Н1 zeoip0 - 192.168.10.1
на R2 zeoip0 - 192.168.10.2
Проблема вот в чём: IPSEC поднимается, но GRE по нему ходить не хочет.

[root@R2 etc]# ipsec status
Security Associations (1 up, 0 connecting):
       nat-t[2]: ESTABLISHED 99 minutes ago, 192.168.2.202[192.168.2.202]...192.168.2.201[10.0.1.2]
       nat-t{2}:  REKEYED, TUNNEL, reqid 1, expires in 2 minutes
       nat-t{2}:   192.168.2.202/32[gre/0] === 10.0.1.2/32[gre/0]
       nat-t{3}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c6b99c38_i cff55aa7_o
       nat-t{3}:   192.168.2.202/32[gre/0] === 10.0.1.2/32[gre/0]

Без ната, например когда я организовываю канал между R1 и R2, я на интерфейсе R1 вижу, что GRE заворачивается в IPSEC, машинки общаются между собой.
Если R1 сконфигурирован как шлюз с NAT, и канал организовываю между H1 и R2 то возникает проблема. На R1 вообще не видно пакетов ESP, туда почему-то ломится GRE:
на R2 делаю

ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
From 192.168.10.2 icmp_seq=1 Destination Host Unreachable
From 192.168.10.2 icmp_seq=2 Destination Host Unreachable
на R1 получаю:
Jun 30 09:07:02 R1 kernel: TRACE: raw:PREROUTING:policy:4 IN=ens3 OUT= MAC=52:54:00:36:5c:07:52:54:00:66:16:fe:08:00 SRC=192.168.2.202 DST=192.168.2.201 LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=28345 DF PROTO=47 
Jun 30 09:07:02 R1 kernel: TRACE: filter:INPUT:policy:1 IN=ens3 OUT= MAC=52:54:00:36:5c:07:52:54:00:66:16:fe:08:00 SRC=192.168.2.202 DST=192.168.2.201 LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=28345 DF PROTO=47 
Jun 30 09:07:03 R1 kernel: TRACE: raw:PREROUTING:policy:4 IN=ens3 OUT= MAC=52:54:00:36:5c:07:52:54:00:66:16:fe:08:00 SRC=192.168.2.202 DST=192.168.2.201 LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=28392 DF PROTO=47 
Jun 30 09:07:03 R1 kernel: TRACE: filter:INPUT:policy:1 IN=ens3 OUT= MAC=52:54:00:36:5c:07:52:54:00:66:16:fe:08:00 SRC=192.168.2.202 DST=192.168.2.201 LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=28392 DF PROTO=47 
IPSEC не видно.

Далее портянки конфигов и логов, думал не выкладывать, может кто-то уже знает в чём может быть дело. Но вдруг надо, так что выложу.

Конфигурация шлюза R1 ничего необычного, обыкновенный маскарадинг и мониторинг

[uzer@R1 ~]$ sudo iptables -nvL
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1148 56929 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
   49  3610 ACCEPT     all  --  ens4   ens3    0.0.0.0/0            0.0.0.0/0           

[uzer@R1 ~]$ sudo iptables -nvL -t nat
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   48  3512 MASQUERADE  all  --  *      ens3    0.0.0.0/0            0.0.0.0/0           

[uzer@R1 ~]$ sudo iptables -nvL -t raw
Chain PREROUTING (policy ACCEPT 517 packets, 33595 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   17  1496 TRACE      all  --  *      *       192.168.2.202        0.0.0.0/0           
    0     0 TRACE      all  --  *      *       192.168.10.2         0.0.0.0/0           
   54  1948 TRACE      all  --  *      *       10.0.1.2             0.0.0.0/0           
ip ad
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:36:5c:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.201/24 brd 192.168.2.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe36:5c07/64 scope link 
       valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:fe:8d:e9 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.1/24 brd 10.0.1.255 scope global ens4
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fefe:8de9/64 scope link 
       valid_lft forever preferred_lft forever

конфигурация хоста Н1:

[root@H1 etc]# iptables -vnL
Chain INPUT (policy ACCEPT 5151 packets, 1210K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0    0 ACCEPT     47   --  ens4   *       192.168.2.202             10.0.1.2        policy match dir in pol ipsec reqid 1 proto 50
    0  0 ACCEPT     47   --  ens3   *       0.0.0.0/0            0.0.0.0/0            policy match dir in pol ipsec

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 766 packets, 139K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1     98 ACCEPT     47   --  *      ens4    10.0.1.2        192.168.2.202             policy match dir out pol ipsec reqid 1 proto 50
   43   3122 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0            policy match dir out pol ipsec mode tunnel tunnel-dst 192.168.2.202 tunnel-src 10.0.1.2
ip addr
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:c2:cb:4d brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.2/24 brd 10.0.1.255 scope global ens4
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fec2:cb4d/64 scope link 
       valid_lft forever preferred_lft forever
3: zeoip0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether f2:3f:4c:42:d9:12 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.1/24 scope global zeoip0
       valid_lft forever preferred_lft forever
    inet6 fe80::f03f:4cff:fe42:d912/64 scope link 
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 22:97:e9:9f:85:7f brd ff:ff:ff:ff:ff:ff
конфигурация хоста R2:
[root@R2 etc]# iptables -vnL
Chain INPUT (policy ACCEPT 5151 packets, 1210K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1    98 ACCEPT     47   --  ens3   *       10.0.1.2             192.168.2.202        policy match dir in pol ipsec reqid 1 proto 50
   13  1022 ACCEPT     47   --  ens3   *       0.0.0.0/0            0.0.0.0/0            policy match dir in pol ipsec

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 766 packets, 139K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     47   --  *      ens3    192.168.2.202        10.0.1.2             policy match dir out pol ipsec reqid 1 proto 50
    0     0 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0            policy match dir out pol ipsec mode tunnel tunnel-dst 10.0.1.2 tunnel-src 192.168.2.202
    0     0 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0            policy match dir out pol ipsec mode tunnel tunnel-dst 192.168.2.202 tunnel-src 10.0.1.2
    0     0 ACCEPT     47   --  *      *       0.0.0.0/0            0.0.0.0/0            policy match dir out pol ipsec mode tunnel tunnel-dst 192.168.2.201 tunnel-src 192.168.2.202
ip addr
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:66:16:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.202/24 brd 192.168.2.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe66:16fe/64 scope link 
       valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:02:78:e8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.21/24 brd 10.0.1.255 scope global ens4
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe02:78e8/64 scope link 
       valid_lft forever preferred_lft forever
4: zeoip0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 9a:50:6d:e8:be:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.2/24 scope global zeoip0
       valid_lft forever preferred_lft forever
    inet6 fe80::9850:6dff:fee8:becc/64 scope link 
       valid_lft forever preferred_lft forever

я уже согласен с кем нибудь попробовать настроить обычный gretap с бриджем между Н1 и R2, вместо eoip, лишь бы заработало.

 , ,

pdn_mail
()

RSS подписка на новые темы