[LINUX] Einfacher VPN-Aufbau eines IPSec-Gateways mit CentOS 8 und openSUSE (Raspberry Pi) --1 Einführung von StrongSwan

Annahmen und Vorbereitungen

Artikel zum Aufbau eines Linux-Servers

Selbst eine Person kann in mindestens 7 bis 8 Stunden eine Verbindung herstellen und installieren, wenn sie Linux-Befehle ausführen kann. (\ * ॑ ꒳ * \ *) alone Es kostet 2000 Yen pro Stunde, alleine zu arbeiten. Dann betragen die Arbeitskosten ungefähr 16000 Yen ... [Es scheint effizienter zu sein, an mehreren Maschinen gleichzeitig zu arbeiten ... Ich denke, es scheint, dass eine Person gleichzeitig an 2 oder 3 Maschinen arbeiten kann]

Das IPSec-Gateway kann mit einem Raspberry Pi und einem gebrauchten Notebook-PC ausgeführt werden, solange Sie die Quelle von Strong Swan kompilieren können. Wenn Sie das Netzwerk also wirklich in einem sicheren VPN-Bereich halten möchten, ist diese Konstruktionsmethode möglicherweise die beste. Versuchen Sie es also bitte. Ich tat! (˶ ・ ᴗ ・) ੭⚐⚑

Umgebung

--IPST-Programm: StrongSwan 5.9.0 (Quellensammlung) --IPST-Verhandlungsempfänger: Raspberry Pi 3B + / openSUSE 15.1 Leap (aarm64)

Annahme

CentOS8.1


# vi /etc/selinux/config

/etc/selinux/config


SELINUX=disabled

CentOS8.1


# reboot

Serverbedingungen

IP-Adresse und Netzwerkaufbau

Funktionen und Versionen zum individuellen Herunterladen und Installieren von Paketen (Stand September 2020)

Andere erforderliche Pakete werden mit den Standardpaketbefehlen der Distribution (dnf, apt usw.) installiert und müssen nicht einzeln heruntergeladen werden.

Zum Herunterladen können Sie auf die offizielle Website zugreifen, von dort herunterladen und per FTP übertragen oder mit wget abrufen, wenn Sie die URL der Download-Datei kennen, die Erfassungsmethode jedoch weggelassen wurde.

Arbeitsablauf

Vorbereitung

Installieren Sie die Dekomprimierungsfunktionen make, cmake und package

Installieren Sie jede Distribution mit der virtuellen Hyper-V-Maschine und Raspeye (die Quellkompilierung ist für beide gleich).

CentOS8.1(Hyper-V/x64)


# dnf -y install make cmake tar bzip2

openSUSE15.1(RaspberryPi)


# zypper -n install make cmake tar bzip2

Installation von GCC und C ++ Compiler

CentOS8.1(Hyper-V/x64)


# dnf -y install gcc gcc-c++

openSUSE15.1(RaspberryPi)


# zypper -n install gcc gcc-c++

Installation der zlib-Quelle

Ich habe die zlib mit dem Standardspeicherort installiert. Die Quellkompilierung ist für virtuelle Hyper-V-Maschinen und Raspeye identisch

# cd [Verzeichnis, in dem sich zlib-Archivdateien befinden]
# tar zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11/
# ./configure
# make
# make install

Aktivieren Sie die IP-Übertragung

Die IP-Weiterleitung muss aktiviert sein, um als IPSec-Gateway zu fungieren. Aktivieren Sie sie daher. Aktivieren Sie in CentOS 8.1 der virtuellen Hyper-V-Maschine die Übertragung, indem Sie den folgenden Befehl ausführen. Raspeye open SUSE kann in YaST eingestellt werden.

CentOS8.1(Hyper-V/x64)


# cat /proc/sys/net/ipv4/ip_forward
0
# vi /etc/sysctl.d/01-ipv4fwd.conf

conf:/etc/sysctl.d/01-ipv4fwd.conf(CentOS)


# Controls IP packet forwarding
net.ipv4.ip_forward = 1

openSUSE15.1(RaspberryPi)


# yast
[Aktivieren Sie danach die IPv4-Weiterleitung über die Netzwerk- und Sicherheitseinstellungen gemäß den YaST-Einstellungen.]

Erweiterung der Netzwerkadapter im VPN-Bereich

Schalten Sie für die virtuelle Hyper-V-Maschine und den Raspberry Pi ** die Stromversorgung einmal aus **, um die IP-Übertragung zu aktivieren, und fügen Sie einen Netzwerkadapter hinzu. In meinem Fall hat Raspai einen kabelgebundenen LAN-Adapter für VPN über USB hinzugefügt, und Hyper-V hat in den Einstellungen einen Netzwerkadapter hinzugefügt.

Überprüfen Sie nach der Erweiterung, ob "eth1" hinzugefügt wurde, aber die IP-Adresse wurde natürlich noch nicht zugewiesen.

# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether [MAC-Adresse des Netzwerkadapters von Anfang an] brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.18/24 brd 192.168.1.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 [IPv6-Adresse des Netzwerkadapters von Anfang an] scope global dynamic noprefixroute
       valid_lft 14373sec preferred_lft 12573sec
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether [MAC-Adresse des Nebenstellen-Netzwerkadapters] brd ff:ff:ff:ff:ff:ff
    inet6 [IPv6-Adresse des Nebenstellen-Netzwerkadapters] scope link noprefixroute
       valid_lft forever preferred_lft forever

# ip route

default via 192.168.1.1 dev eth0 proto static metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.18 metric 100

Im Fall von CentOS wird der Befehl zum Aktivieren der IP-Weiterleitung verwendet. Überprüfen Sie daher, ob er aktiviert ist (ip_forward ist 1).

CentOS8.1(Hyper-V/x64)


# cat /proc/sys/net/ipv4/ip_forward
1

# sysctl --system
…(Unterlassung)
* Applying /etc/sysctl.d/01-ipv4fwd.conf ...
net.ipv4.ip_forward = 1
…(Unterlassung)

Installieren Sie die zum Kompilieren von StrongSwan erforderlichen Pakete mit dem Befehl Distribution Standard Package

Hinweis: Wenn Sie es nicht ausführen, auch wenn es problematisch ist, wird eine Fehlermeldung angezeigt, dass kein Paket vorhanden ist und die Kompilierung gestoppt wird (´ • ω • ̥`).

CentOS8.1(Hyper-V/x64)


# dnf -y install gmp-devel openssl-devel

openSUSE15.1(RaspberryPi)


# zypper -n install gmp-devel libopenssl-devel

Installieren der StrongSwan 5.9.0-Quellkompilierung

Gemeinsam für virtuelle Hyper-V-Maschinen und Raspeye. Dieser Vorgang dauerte eine ganze Weile (besonders beim Raspberry Pi dauerte es 20-30 Minuten)

konfigurieren und machen

# cd [strongswan-5.9.0.tar.Verzeichnis, in dem sich gz befindet]
# tar xvzf strongswan-5.9.0.tar.gz
# cd strongswan-5.9.0/
# ./configure --prefix=/usr --sysconfdir=/etc --enable-openssl
# make
# make install

Wenn Sie fehlerfrei kompilieren können, ist die Installation abgeschlossen ♪ (\ * ˘︶˘ \ *) ...: \ * ♡

Starke Schwanpräferenzen

Wenn StrongSwan durch Quellkompilierung installiert wird, wird die Konfigurationsdatei in /etc/ipsec.conf gespeichert und die IPSec-Verbindungseinstellungen werden darin festgelegt.

[Apache Grundeinstellungen]
# vi /etc/ipsec.conf

Richten Sie auf der Seite, die IPSec einrichtet (diejenige, die die Einrichtung sendet), zuerst CentOS 8.1 für Hyper-V ein. Wie im Abschnitt "Serverbedingungen" beschrieben, lautet Ihre IP-Adresse auf der Seite des Hyper-V-Computers 192.168.1.18 und der Einrichtungspartner Raspberry Pi lautet 192.168.1.22. Schreiben Sie das Paar also in die Konfigurationsdatei.

"Links" schreibt die Informationen der Person, die das Establishment verhandelt, und "rechts" schreibt die Informationen der Person, die das Establishment einrichten soll (aus dem offiziellen Handbuch von StrongSwan. / ConnSection)))

CentOS8.1(Hyper-V/x64)


…
#Fügen Sie Folgendes hinzu
conn [Distinguished Name Beispiel: Linux-2-linux]
      authby=secret
      auto=start				#IPSec-Verhandlungen senden
      closeaction=restart
      dpdaction=restart
      left=192.168.1.18			#Links ist Ihr eigenes IPSec-Gateway
      leftid=192.168.1.18		#ID, die Sie identifiziert, um IPSec auszuhandeln
      leftsubnet=192.168.5.0/24
      right=192.168.1.22		#rechts ist das IPSec-Gateway der anderen Partei
      rightid=192.168.1.22		#ID, die den IPSec-Verhandlungspartner identifiziert
      rightsubnet=192.168.2.0/24
…

Übrigens habe ich für die ID in meinem Fall der Einfachheit halber die IP-Adresse verwendet, aber eine Zeichenfolge ist auch in Ordnung. Und da leftsubnet und rightsubnet die VPN-Bereiche sind, für die Sie und die andere Partei verantwortlich sind, ist leftsubnet Ihr eigener VPN-Bereich, also 192.168.5.0/24, und rightsubnet ist der Raspeye-VPN-Bereich der anderen Partei, also 192.168.2.0/ Ich habe 24 eingegeben.

Als nächstes setzen Sie die offene SUSE von Razpai. Wie im Abschnitt "Serverbedingungen" beschrieben, lautet die einzurichtende IP-Adresse 192.168.1.22 und das Hyper-V-CentOS 8 auf der anderen Seite 192.168.1.18. Was ist also Hyper-V (CentOS 8)? Schreiben Sie den umgekehrten Inhalt in die Konfigurationsdatei.

openSUSE15.1(RaspberryPi)


#Fügen Sie Folgendes hinzu
conn [Distinguished Name Beispiel: Linux-2-linux]
      authby=secret
      auto=add				#Erhalten Sie IPSec-Verhandlungen
      closeaction=clear
      dpdaction=clear
      left=192.168.1.22
      leftid=192.168.1.22
      leftsubnet=192.168.2.0/24
      right=192.168.1.18
      rightid=192.168.1.18
      rightsubnet=192.168.5.0/24

Der Punkt ist, dass durch Setzen von auto = add auf der Empfangsseite der IPSec-Einrichtungsverhandlung festgelegt wird und der Inhalt von links und rechts umgekehrt wird. Auf diese Weise können Sie eine IPSec-Verbindung herstellen, wenn die definierten Namen (die Zeichenfolge nach conn) übereinstimmen.

Standardmäßig verwendet StrongSwan die PSK-Methode und standardmäßig die AES / SHA-Verschlüsselungsmethode. Wenn andere Verschlüsselungsmethoden festgelegt werden müssen, legen Sie diese separat fest, lassen Sie sie hier jedoch weg.

Abgesehen davon ist StrongSwan zu diesem Zeitpunkt NAT-T-kompatibel, und IPSec kann auf NAT angewendet werden (in der Vergangenheit konnte IPSec nicht auf NAT angewendet werden), sodass NAT im Internet verwendet wird. Es scheint, dass mit StrongSwan erstellte VPNs selbst in dem verwendeten Bereich über das Internet kommunizieren können (obwohl ich noch nie damit experimentiert habe ...).

[Starke Swan-Schlüsseleinstellungen]
# vi /etc/ipsec.secrets

/etc/ipsec.secrets


…
: PSK "[Geeignete Zeichenfolge: Beispiel ... kazumi75kitty]"
…

Da wir die Standard-PSK-Methode verwenden, werden wir sie sowohl für virtuelle Hyper-V-Maschinen als auch für Raspeye gleich machen.

Starke Schwäne starten

Erstellen und aktivieren Sie das Dienststart-Skript

Nachdem wir die erforderlichen Umgebungseinstellungen für StrongSwan haben, möchten wir es starten können. Da das Startskript Systemd ist, erstellen Sie es in / etc / systemd / system

# cd /etc/systemd/system
# vi strongswan.service

strongswan.service


[Unit]
Description=strongSwan

[Service]
Type=forking
ExecStart=/usr/sbin/ipsec start
ExecStop=/usr/sbin/ipsec stop

[Install]
WantedBy=multi-user.target

Ich werde hier nicht näher auf Systemd-Skripte eingehen, aber in strongSwan wird der Diensttyp verzweigt, da das Starten und Stoppen im Hintergrund des übergeordneten Prozesses erfolgt.

Firewall-Einstellungen

Als nächstes akzeptiert die Firewall-Einstellung IPSec (die von IPSec ausgetauschten verschlüsselten Daten selbst und die Aushandlung von IPSec können akzeptiert werden). Mit den Einstellungen hier wird jedoch nicht die interne Einschränkung von 192.168.1.0/24 für das Tunneln angegeben. Wenn IPSec-Pakete von anderen Netzwerksegmenten übertragen werden können, können sie empfangen werden. Wenn Sie jedoch bis zu diesem Punkt Maßnahmen ergreifen, wird dies kompliziert. Der Einfachheit halber erlauben wir nur IPSec.

# firewall-cmd --permanent --add-service=ipsec
# firewall-cmd --reload

# firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client ipsec
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="192.168.1.0/24" port port="12345" protocol="tcp" accept

Dieser Befehl gilt sowohl für virtuelle Hyper-V-Maschinen als auch für Raspeye.

Starten und überprüfen Sie den Betrieb

Fangen wir an. Beginnen Sie immer mit Aktivieren Aktivieren und bestätigen Sie, dass der Status "Aktiv" und "Wird ausgeführt" lautet.

** Zuerst wird StrongSwan von der Seite gestartet, die die IPSec-Einrichtungsverhandlung empfängt, und dann in der Reihenfolge der Seite, die die IPSec-Einrichtung sendet **. Hier wird nach dem Starten von StrongSwan von Raspeye die virtuelle Maschine von StrongSwan von Hyper-V gestartet.

# systemctl start strongswan
# systemctl enable strongswan
# systemctl status strongswan

起動成功

Überprüfen Sie, ob die virtuelle Hyper-V-Maschine und Raspeye auf "Aktiv" und "Wird ausgeführt" eingestellt sind, und überprüfen Sie schließlich, ob das IPSec-Tunneling eingerichtet ist.

CentOS8.1(Hyper-V/x64)


# /usr/sbin/ipsec status
Security Associations (1 up, 0 connecting):
linux-2-linux[1]: ESTABLISHED 2 minutes ago, 192.168.1.18[192.168.1.18]...192.168.1.22[192.168.1.22]
linux-2-linux{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: ********_i ********_o
linux-2-linux{1}:   192.168.5.0/24 === 192.168.2.0/24

# ip xfrm policy
src 192.168.5.0/24 dst 192.168.2.0/24
        dir out priority 375423 ptype main
        tmpl src 192.168.1.18 dst 192.168.1.22
                proto esp spi 0x******** reqid 1 mode tunnel
src 192.168.2.0/24 dst 192.168.5.0/24
        dir fwd priority 375423 ptype main
        tmpl src 192.168.1.22 dst 192.168.1.18
                proto esp reqid 1 mode tunnel
src 192.168.2.0/24 dst 192.168.5.0/24
        dir in priority 375423 ptype main
        tmpl src 192.168.1.22 dst 192.168.1.18
                proto esp reqid 1 mode tunnel

openSUSE15.1(RaspberryPi)


# /usr/sbin/ipsec status
Security Associations (1 up, 0 connecting):
linux-2-linux[1]: ESTABLISHED 2 minutes ago, 192.168.1.22[192.168.1.22]...192.168.1.18[192.168.1.18]
linux-2-linux{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: ********_i ********_o
linux-2-linux{1}:   192.168.2.0/24 === 192.168.5.0/24

# ip xfrm policy
src 192.168.2.0/24 dst 192.168.5.0/24
        dir out priority 375423 ptype main
        tmpl src 192.168.1.22 dst 192.168.1.18
                proto esp spi 0x******** reqid 1 mode tunnel
src 192.168.5.0/24 dst 192.168.2.0/24
        dir fwd priority 375423 ptype main
        tmpl src 192.168.1.18 dst 192.168.1.22
                proto esp reqid 1 mode tunnel
src 192.168.5.0/24 dst 192.168.2.0/24
        dir in priority 375423 ptype main
        tmpl src 192.168.1.18 dst 192.168.1.22
                proto esp reqid 1 mode tunnel

Das IPSec-Tunneling wurde erfolgreich mit virtuellen Hyper-V-Maschinen und Raspetorte (˶ ・ ᴗ ・) ੭⚐⚑ eingerichtet

Bonus (Geben Sie eine Zeichenfolge wie Domain für die ID von ipsec.conf an.)

Selbst wenn Sie in der StrongSwan-Konfigurationsdatei /etc/ipsec.conf eine Zeichenfolge anstelle einer IP-Adresse mit leftid oder rightid verwenden, wird der Erfassungsbildschirm angezeigt (\ * ´꒳` \ *).

Vielleicht ist dieser leichter zu verstehen. Im Beispiel werden "Himbeer-Pi" und "Nur Test @ Kazumi-Marmelade" unterschieden. ipsec.confのIDに文字列やドメインを指定する

Ergänzung (wenn IPSec-Tunneling über NAT erfolgt)

Ich habe noch kein leicht verständliches Bild, aber geben Sie für die linke und rechte IP-Adresse in ipsec.conf Ihre eigene IP-Adresse und die IP-Adresse des anderen Teilnehmers nach der NAT-Konvertierung ein, wie Sie sehen. Zu diesem Zeitpunkt ist es erforderlich, dass die linke und die rechte ID paarweise übereinstimmen.

Beispiel: 192.168.1.0/24 → Wenn 192.168.120.0/28 von NAT partitioniert wird

IPsecGW-1 (innerhalb von 192.168.1.0/24)  left=192.168.1.22  leftid="gw1"  right=192.168.1.18  rightid="gw2" IPsecGW-2 (innerhalb von 192.168.120.0/28)  left=192.168.120.1  leftid="gw2"  right=192.168.120.3  rightid="gw1"

Auf diese Weise kann IPsec durch Eingabe einer IP-Adresse eingerichtet werden, die NAT berücksichtigt. Weitere Details werde ich jedoch später veröffentlichen.

nächstes Mal

Mit der Einführung von Strong Swan wurde der Bau des IPsec-Gateways mit CentOS 8.1 auf Raspberry Pi und Hyper-V abgeschlossen. Verbinden Sie als Nächstes den Client und den Server mit dem VPN, das mit diesem IPSec-Gateway verbunden ist, und versuchen Sie, eine Verbindung untereinander herzustellen (˶˙ᵕ˙˶).

Recommended Posts

Einfacher VPN-Aufbau eines IPSec-Gateways mit CentOS 8 und openSUSE (Raspberry Pi) --1 Einführung von StrongSwan
Erstellen Sie ein IPSec-Gateway-VPN mit CentOS 8 und openSUSE (Raspberry Pi) - 2 StrongSwan VPN-Verbindungsbestätigung
Einfacher VPN-Aufbau eines IPSec-Gateways mit Ubuntu 20.04 und Raspberry Pi - 2 StrongSwan VPN-Verbindungsbestätigung
Aufbau eines VPN-Servers mit Raspberry Pie
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Haustierüberwachung mit Rekognition und Raspberry pi
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
MQTT Radicon Car mit Arduino und Himbeere
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Messen Sie die CPU-Temperatur von Raspeye mit Python
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Client-Betriebssystems)
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Installation von Docker auf Raspberry Pi und L Chika
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Erstellen Sie mit Raspberry Pi + DHT11 ganz einfach einen TweetBot, der Sie über Temperatur und Luftfeuchtigkeit informiert.
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 7: Einstellung der TFTP-Route und Starttest für jeden Raspetorte)