Назад | Перейти на главную страницу

Пересылка пакетов через openvpn и ipsec в контейнере strongswan в докере в Kubernetes

Я запускаю развертывание с IPsec (strongswan) и контейнером OpenVPN.

Конфигурация IPsec:

config setup

conn customer
    keyexchange=ikev1
    left=%defaultroute
    leftsubnet=192.168.224.0/24
    right=X.X.X.X
    rightsubnet=10.5.0.0/16
    ike=aes256-sha256-modp3072!
    esp=aes256-sha256-modp3072!
    authby=psk
    ikelifetime=28800
    lifetime=3600
    auto=start
    type=tunnel

ipsec-start-sh:

    ip link add name eth1 type dummy
    ifconfig eth1 up
    ip addr add 192.168.224.1 dev eth1
    ifconfig eth1 mtu 1440
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -I FORWARD -s 0/0 -i tun0 -o eth0 -j ACCEPT
    ipsec start

IPsec работает!

Я могу пинговать сервер на другой стороне IPsec.

Конфигурация openvpn:

server 192.168.255.0 255.255.255.0
verb 3
key /etc/openvpn/pki/private/vpn.seeberger.adito.cloud.key
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/vpn.seeberger.adito.cloud.crt
dh /etc/openvpn/pki/dh.pem
tls-auth /etc/openvpn/pki/ta.key
key-direction 0
keepalive 10 60
persist-key
persist-tun

proto udp
# Rely on Docker to do port mapping, internally always 1194
port 1194
dev tun0
status /tmp/openvpn-status.log

user nobody
group nogroup
comp-lzo no

### Route Configurations Below
route 10.5.0.0 255.255.0.0

### Push Configurations Below
push "route 10.5.0.0 255.255.0.0"
#push "block-outside-dns"
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"
push "comp-lzo no"

ifconfig: 
server 192.168.255.0 255.255.255.0
verb 3
key /etc/openvpn/pki/private/vpn.seeberger.adito.cloud.key
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/vpn.seeberger.adito.cloud.crt
dh /etc/openvpn/pki/dh.pem
tls-auth /etc/openvpn/pki/ta.key
key-direction 0
keepalive 10 60
persist-key
persist-tun

proto udp
# Rely on Docker to do port mapping, internally always 1194
port 1194
dev tun0
status /tmp/openvpn-status.log

user nobody
group nogroup
comp-lzo no

### Route Configurations Below
route 10.5.0.0 255.255.0.0

### Push Configurations Below
push "route 10.5.0.0 255.255.0.0"
#push "block-outside-dns"
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"
push "comp-lzo no"

ifconfig:

eth0      Link encap:Ethernet  HWaddr 4A:1C:D3:AB:2E:DE  
          inet addr:10.42.74.74  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: fe80::481c:d3ff:feab:2ede/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1440  Metric:1
          RX packets:1454 errors:0 dropped:0 overruns:0 frame:0
          TX packets:316 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:234613 (229.1 KiB)  TX bytes:26814 (26.1 KiB)

eth1      Link encap:Ethernet  HWaddr 9E:B3:59:1F:3A:03  
          inet addr:192.168.224.1  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: fe80::9cb3:59ff:fe1f:3a03/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1440  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:70 (70.0 B)

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:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.255.1  P-t-P:192.168.255.2  Mask:255.255.255.255
          inet6 addr: fe80::a4c1:6d34:21b:1d7a/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:240 (240.0 B)  TX bytes:304 (304.0 B)

маршрут -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         169.254.1.1     0.0.0.0         UG    0      0        0 eth0
10.5.0.0        192.168.255.2   255.255.0.0     UG    0      0        0 tun0
169.254.1.1     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.255.0   192.168.255.2   255.255.255.0   UG    0      0        0 tun0
192.168.255.2   0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Можете ли вы помочь мне с маршрутами iptable для маршрутизации трафика от tun0 к туннелю ipsec, поэтому я пингую сервер (например, 10.5.1.170) с моего локального компьютера на сервер на другом конце туннеля ipsec?

---редактировать---

openvpnclient-ip: 192.168.255.6

tcpdump на ipsec-container: ping openvpn-container -> 10.5.1.170 (работает!)

13:33:18.347397 IP 10.42.74.71.4500 > X.X.X.X.4500: UDP-encap: ESP(spi=0xb6ab40ec,seq=0x15), length 136
13:33:18.358348 IP X.X.X.X.4500 > 10.42.74.71.4500: UDP-encap: ESP(spi=0xcd9b9abe,seq=0x16), length 136
13:33:18.358348 IP 10.5.1.170 > 192.168.224.1: ICMP echo reply, id 8192, seq 0, length 64

ping openvpn-client -> 10.5.1.170 (не работает!)

13:27:03.644454 IP 192.168.255.6 > 10.5.1.170: ICMP echo request, id 1, seq 952, length 40

X.X.X.X - IP другой компании.

С уважением и заранее спасибо.

Джофу

Это не сработает. Туннель IPsec находится между подсетями 192.168.224.0/24 и 10.5.0.0/16. Пакет с исходным IP 192.168.255.6 не соответствует этой политике IPsec, поэтому он отбрасывается.

Если вы не можете изменить политику IPsec (чтобы она покрывала эти пакеты), возможно, вы могли бы использовать пакеты NAT от 192.168.255.0/24 к IP в 192.168.224.0/24 так что политика совпадает.