Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Einrichten von IPSec für Virtuelle Server mit NAT

profile picture
Author
Hetzner Online
Published
2019-03-08
Time to read
3 minutes reading time

Einführung

Zur sicheren Anbindung von Hosts kommt oft IPSec zum Einsatz. Bei der Einrichtung muß beachtet werden, daß bei CX-vServern die öffentliche IP per 1:1 NAT auf eine interne IP umgesetzt wird.

In dieser Anleitung wird mit StrongSWAN und Pre-Shared-Keys eine transparente IPSec Verbindung zwischen einem externen Host und einem CX vServer aufgebaut. Es können dann auf beiden Seiten die öffentlichen IPs verwendet werden.

Dieses Tutorial sollte auch auf Cloud-Servern funktionieren.

Daten

Host Alice (Endpunkt Host A)

  • System: Debian 8 jessie
  • IPSec: strongswan 5.2.1-6+deb8u2
  • IPv4: 192.0.2.10
  • IPv6: 2001:db8:61:20e1::2

Host Bob (Endpunkt CX vServer)

  • System: Debian 8 jessie
  • IPSec: strongswan 5.2.1-6+deb8u2
  • IPv4: 203.0.113.40
  • IPv4 intern: 172.31.1.100
  • IPv6: 2a01:4f8:db8:c17::2

Installation

Wir bauen direkt 2 Tunnel, einen für IP4, einen für IP6.

Alice

Pakete installieren:

# apt-get install strongswan
# ipsec stop

Anschließend die Datei /etc/ipsec.conf mit entsprechend angepassten Werten anlegen bzw. ändern:

version 2.0
#
config setup
#
conn NameDerVerbindung
        type=transport
        keyingtries=0
        authby=secret
        auto=start
        leftid=192.0.2.10
        left=192.0.2.10
        rightid=203.0.113.40
        right=203.0.113.40
#
conn NameDerVerbindungSix
        type=transport
        keyingtries=0
        authby=secret
        auto=start
        leftid=2001:db8:61:20e1::2
        left=2001:db8:61:20e1::2
        rightid=2001:db8:c17::2
        right=2001:db8:c17::2

Es gibt ein paar Implementationen von StrongSWAN die sehr genau auf Einrückungen achten. Es sind immer 8 Leerzeichen oder ein Tabulator.

Anschließend die Datei /etc/ipsec.secrets mit entsprechend angepassten Werten anlegen bzw. ändern:

203.0.113.40 192.0.2.10 : PSK "SuperGeheimesPasswortFuerIp4Tunnel"
2001:db8:c17::2 2001:db8:61:20e1::2 : PSK "SuperGeheimesPasswortFuerIp6Tunnel"

Anschließend IPSec-Tunnel starten:

# ipsec start

Bob

Pakete installieren:

# apt-get install strongswan
# ipsec stop

Anschließend die Datei /etc/ipsec.conf mit entsprechend angepassten Werten anlegen bzw. ändern:

version 2.0
#
config setup
#
conn NameDerVerbindung
        type=transport
        keyingtries=0
        authby=secret
        auto=start
        leftid=203.0.113.40
        left=172.31.1.100
        rightid=192.0.2.10
        right=192.0.2.10
#
conn NameDerVerbindungSix
        type=transport
        keyingtries=0
        authby=secret
        auto=start
        leftid=2001:db8:c17::2
        left=2001:db8:c17::2
        rightid=2001:db8:61:20e1::2
        right=2001:db8:61:20e1::2

Anschließend die Datei /etc/ipsec.secrets mit entsprechend angepassten Werten anlegen bzw. ändern:

192.0.2.10 203.0.113.40 : PSK "SuperGeheimesPasswortFuerIp4Tunnel"
2001:db8:61:20e1::2 2001:db8:c17::2 : PSK "SuperGeheimesPasswortFuerIp6Tunnel"

Anschließend IPSec-Tunnel starten:

# ipsec start

Test

Nun sollten die Tunnel erfolgreich aufgebaut werden. Die kann man auch in /var/log/syslog bzw. /var/log/auth.log beobachten. Der Befehl ipsec status Sollte eine vergleichbare Ausgabe erzeugen:

Security Associations (2 up, 0 connecting):
  TemplateTwo[20]: ESTABLISHED 76 minutes ago, 172.31.1.100[203.0.113.40]...192.0.2.10[192.0.2.10]
  TemplateTwo{12}:  INSTALLED, TRANSPORT, ESP in UDP SPIs: c5b8b7f7_i ccf37767_o
  TemplateTwo{12}:   172.31.1.100/32 === 192.0.2.10/32
  TemplateTwoSix[19]: ESTABLISHED 82 minutes ago, 2001:db8:c17::2[2001:db8:c17::2]...2001:db8:61:20e1::2[2001:db8:61:20e1::2]
  TemplateTwoSix{11}:  INSTALLED, TRANSPORT, ESP SPIs: c5521750_i cbe50d53_o
  TemplateTwoSix{11}:   2001:db8:c17::2/128 === 2001:db8:61:20e1::2/128

Mittels tcpdump sollte man die ESP Pakete sehen können (einfacher Ping):

13:42:53.000336 IP 203.0.113.40.ipsec-nat-t > 192.0.2.10.ipsec-nat-t: UDP-encap: ESP(spi=0xccf37767,seq=0x516), length 116

Fazit

Inzwischen sollten Sie in der Lage sein, eine IPSec-Verbindung auf einem virtuellen Server mit NAT zu installieren.

Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get 20€ free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more