strongSwan은 리눅스, 프리베이스, OS X, 윈도우, 안드로이드, iOS에서 실행되는 오픈 소스, 크로스 플랫폼, 전면적이고 널리 사용되는 IPsec 기반 VPN (가상 사설망) 구현입니다. 주로 IKE(Internet Key Exchange) 프로토콜(IKEv1 및 IKEv2)을 지원하는 키잉 데몬으로 두 피어 간의 보안 동의어(SA)를 설정합니다.
이 문서에서는 우분투 및 데비안 서버에서 strongSwan을 사용하여 사이트 간 IPSec VPN 게이트웨이를 설정하는 방법을 설명합니다. 사이트 간이란 각 보안 게이트웨이 뒤에 서브넷이 있음을 의미합니다. 또한 피어는 사전 공유 키(PSK)를 사용하여 서로를 인증합니다.
테스트 환경
실제 세계의 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
다음으로, 다음 명령을 실행하여 새 설정을 로드합니다.
$ 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. 보안 게이트웨이에서 패키지 캐시를 업데이트하고 strongswan 패키지를 APT 패키지 관리자를 사용하여 설치합니다.
$ 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 – 연결 이름을 정의합니다.
- type – 연결 유형을 정의합니다.
- auto – IPSec를 시작하거나 다시 시작할 때 연결을 처리하는 방법을 지정합니다.
- keyexchange – 사용할 IKE 프로토콜 버전을 정의합니다.
- authby – 피어가 서로 인증하는 방법을 정의합니다.
- left – 왼쪽 참가자의 공용 네트워크 인터페이스의 IP 주소를 정의합니다.
- leftsubnet – 왼쪽 참가자 뒤의 사설 서브넷을 나타냅니다.
- right – 오른쪽 참가자의 공용 네트워크 인터페이스의 IP 주소를 지정합니다.
- rightsubnet – 왼쪽 참가자 뒤의 사설 서브넷을 나타냅니다.
- ike – 사용할 IKE/ISAKMP SA 암호화/인증 알고리즘 목록을 정의합니다. 쉼표로 구분된 목록을 추가할 수 있습니다.
- esp – 연결에 사용할 ESP 암호화/인증 알고리즘 목록을 정의합니다. 쉼표로 구분된 목록을 추가할 수 있습니다.
- aggressive – 공격적 모드 또는 주요 모드를 사용할지를 나타냅니다.
- keyingtries – 연결 협상을 시도해야 하는 횟수를 나타냅니다.
- ikelifetime – 연결의 키 채널이 재협상되기 전에 유지되어야 하는 기간을 나타냅니다.
- lifetime – 성공적인 협상부터 만료까지의 특정 연결 인스턴스가 지속되어야 하는 기간을 정의합니다.
- dpddelay – R_U_THERE 메시지/정보 교환을 피어로 보내는 시간 간격을 지정합니다.
- dpdtimeout – 비활동 시 피어로의 모든 연결이 삭제되는 타임아웃 간격을 지정합니다.
- dpdaction – 연결을 관리하기 위해 Dead Peer Detection(DPD) 프로토콜을 어떻게 사용할지를 정의합니다.
위의 구성 매개변수에 대한 자세한 정보는 명령을 실행하여 ipsec.conf 매뉴얼 페이지를 읽어보세요.
$ man ipsec.conf
단계 4: 피어 간 인증을 위한 PSK 구성
8. 두 보안 게이트웨이를 구성한 후, 다음 명령을 사용하여 피어가 사용할 안전한 PSK를 생성하세요.
$ head -c 24 /dev/urandom | base64

9. 그 다음, 양쪽 게이트웨이의 PSK를 /etc/ipsec.secrets 파일에 추가하십시오.
$ 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
이상입니다! 이 문서에서는 strongSwan을 사용하여 Ubuntu 및 Debian 서버에서 사이트 간 IPSec VPN을 설정하는 방법을 설명했습니다. 두 보안 게이트웨이가 PSK를 사용하여 서로 인증하도록 구성되었습니다. 궁금한 점이나 공유하고 싶은 생각이 있으면 아래 피드백 양식을 통해 저희에게 연락해 주십시오.
Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/