웹사이트 검색

Debian 및 Ubuntu에서 Strongswan을 사용하여 IPsec 기반 VPN을 설정하는 방법


StrongSwan은 Linux, FreeBSD, OS X, Windows, Android 및 iOS에서 실행되는 오픈 소스, 크로스 플랫폼, 모든 기능을 갖춘 널리 사용되는 IPsec 기반 VPN(가상 사설망) 구현입니다. 보안 연결(SA을 설정하기 위해 주로 인터넷 키 교환 프로토콜(IKEv1IKEv2)을 지원하는 키 입력 데몬입니다. 강함>) 두 피어 사이.

이 문서에서는 UbuntuDebian 서버에서 strongSwan을 사용하여 사이트 간 IPSec VPN 게이트웨이를 설정하는 방법을 설명합니다. . 사이트 간이란 각 보안 게이트웨이 뒤에 서브넷이 있다는 의미입니다. 또한 피어는 사전 공유 키(PSK)를 사용하여 서로를 인증합니다.

테스트 환경

환경을 구성하려면 다음 IP를 실제 IP로 바꿔야 합니다.

사이트 1 게이트웨이(tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

사이트 2 게이트웨이(tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

1단계: 커널 패킷 전달 활성화

1. 먼저 두 보안 게이트웨이의 /etc/sysctl.conf 구성 파일에 적절한 시스템 변수를 추가하여 패킷 전달을 활성화하도록 커널을 구성해야 합니다.

sudo vim /etc/sysctl.conf

다음 줄을 찾아서 주석 처리를 해제하고 표시된 대로 값을 설정합니다(자세한 내용은 파일의 주석을 참조하세요).

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. 다음으로, 다음 명령을 실행하여 새 설정을 로드합니다.

sudo sysctl -p

3. UFW 방화벽 서비스가 활성화된 경우 /etc/ufw/before.rules 구성 파일의 필터 규칙 바로 앞에 다음 규칙을 추가해야 합니다. 보안 게이트웨이 중 하나입니다.

사이트 1 게이트웨이(tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

사이트 2 게이트웨이(tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. 방화벽 규칙이 추가되면 표시된 대로 UFW를 다시 시작하여 새로운 변경 사항을 적용합니다.

sudo ufw disable 
sudo ufw enable

2단계: Debian 및 Ubuntu에 StrongSwan 설치

5. 두 보안 게이트웨이 모두에서 패키지 캐시를 업데이트하고 APT 패키지 관리자를 사용하여 strongswan 패키지를 설치합니다.

sudo apt update
sudo apt install strongswan 

6. 설치가 완료되면 설치 프로그램 스크립트가 strongswan 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 합니다. 다음 명령을 사용하여 상태와 활성화 여부를 확인할 수 있습니다.

sudo systemctl status strongswan.service
sudo systemctl is-enabled strongswan.service

3단계: 보안 게이트웨이 구성

7. 다음으로 /etc/ipsec.conf 구성 파일을 사용하여 보안 게이트웨이를 구성해야 합니다.

사이트 1 게이트웨이(tecmint-devgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

다음 구성을 복사하여 파일에 붙여넣습니다.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

사이트 2 게이트웨이(tecmint-prodgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

다음 구성을 복사하여 파일에 붙여넣습니다.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

각 구성 매개변수의 의미는 다음과 같습니다.

  • config setup – 모든 연결에 적용되는 IPSec에 대한 일반 구성 정보를 지정합니다.
  • charondebug – Charon 디버깅 출력을 얼마나 기록해야 하는지 정의합니다.
  • uniqueids – 특정 참가자 ID를 고유하게 유지해야 하는지 여부를 지정합니다.
  • conn prodgateway-to-devgateway – 연결 이름을 정의합니다.
  • 유형 – 연결 유형을 정의합니다.
  • auto – IPSec이 시작되거나 다시 시작될 때 연결을 처리하는 방법입니다.
  • keyexchange – 사용할 IKE 프로토콜의 버전을 정의합니다.
  • authby – 피어가 서로를 인증하는 방법을 정의합니다.
  • 왼쪽 – 왼쪽 참가자의 공용 네트워크 인터페이스의 IP 주소를 정의합니다.
  • leftsubnet – 왼쪽 참가자 뒤에 있는 개인 서브넷을 나타냅니다.
  • right – 올바른 참가자의 공용 네트워크 인터페이스의 IP 주소를 지정합니다.
  • rightsubnet – 왼쪽 참가자 뒤에 있는 개인 서브넷을 나타냅니다.
  • ike – 사용할 IKE/ISAKMP SA 암호화/인증 알고리즘 목록을 정의합니다. 쉼표로 구분된 목록을 추가할 수 있습니다.
  • esp – 연결에 사용할 ESP 암호화/인증 알고리즘 목록을 정의합니다. 쉼표로 구분된 목록을 추가할 수 있습니다.
  • 공격적 – 공격적 모드를 사용할지 기본 모드를 사용할지 지정합니다.
  • keyingtries – 연결 협상을 위해 시도해야 하는 횟수를 나타냅니다.
  • ikelifetime – 재협상되기 전에 연결의 키잉 채널이 지속되어야 하는 기간을 지정합니다.
  • 수명 – 성공적인 협상부터 만료까지 연결의 특정 인스턴스가 지속되어야 하는 기간을 정의합니다.
  • dpddelay – R_U_THERE 메시지/INFORMATIONAL 교환이 피어에 전송되는 시간 간격을 지정합니다.
  • dpdtimeout – 비활성 시 피어에 대한 모든 연결이 삭제되는 시간 초과 간격을 지정합니다.
  • dpdaction – DPD(Dead PeerDetection) 프로토콜을 사용하여 연결을 관리하는 방법을 정의합니다.

위 구성 매개변수에 대한 자세한 내용을 보려면 명령을 실행하여 ipsec.conf 매뉴얼 페이지를 읽어보세요.

man ipsec.conf

4단계: P2P 인증을 위한 PSK 구성

8. 두 보안 게이트웨이를 모두 구성한 후 다음 명령을 사용하여 피어에서 사용할 보안 PSK를 생성합니다.

head -c 24 /dev/urandom | base64

9. 다음으로 두 게이트웨이의 /etc/ipsec.secrets 파일에 PSK를 추가합니다.

sudo vim /etc/ipsec.secrets

다음 줄을 복사하여 붙여넣으세요.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. IPSec 프로그램을 다시 시작하고 상태를 확인하여 연결을 확인하세요.

sudo ipsec restart
sudo ipsec status

11. 마지막으로 ping 명령을 실행하여 두 보안 게이트웨이 모두에서 프라이빗 서브넷에 액세스할 수 있는지 확인합니다.

ping 192.168.0.101
ping 10.0.2.15

12. 또한 그림과 같이 IPSec를 중지하고 시작할 수 있습니다.

sudo ipsec stop
sudo ipsec start

13. 수동으로 연결을 시작하는 IPSec 명령 등에 대해 자세히 알아보려면 IPSec 도움말 페이지를 참조하세요.

ipsec --help

그게 다야! 이 문서에서는 UbuntuDebian 서버에서 strongSwan을 사용하여 사이트 간 IPSec VPN을 설정하는 방법을 설명했습니다. 보안 게이트웨이는 PSK를 사용하여 서로 인증하도록 구성되었습니다. 질문이나 공유하고 싶은 생각이 있으면 아래 피드백 양식을 통해 문의해 주세요.