6.7. 메시 VPN 구성
임의 의 VPN이라고도 하는 메시 VPN 네트워크는 모든 노드가 IPsec을 사용하여 통신하는 네트워크입니다. 이 구성은 IPsec을 사용할 수 없는 노드에 대한 예외를 허용합니다. 메시 VPN 네트워크는 두 가지 방법으로 구성할 수 있습니다.
- IPsec이 필요합니다.
- IPsec을 선호하지만, 일반 텍스트 통신을 대체합니다.
노드 간 인증은 X.509 인증서 또는 DNSSEC(DNS Security Extensions)를 기반으로 할 수 있습니다.
다음 절차에서는 X.509 인증서를 사용합니다. 이러한 인증서는 Dogtag Certificate System과 같은 모든 종류의 CA(인증 기관) 관리 시스템을 사용하여 생성할 수 있습니다. Dogtag는 각 노드의 인증서를 개인 키, 노드 인증서 및 기타 노드의 X.509 인증서의 유효성을 검사하는 데 사용되는 루트 CA 인증서가 포함된 PKCS #12 형식(.p12 파일)에서 사용할 수 있다고 가정합니다.
각 노드에는 X.509 인증서를 제외하고 동일한 구성이 있습니다. 이를 통해 네트워크의 기존 노드를 재구성하지 않고 새 노드를 추가할 수 있습니다. PKCS #12 파일에는 이름 "노드"를 사용하는 "이름"이 필요하며, 이를 통해 친숙한 이름을 참조하는 구성 파일이 모든 노드에 대해 동일할 수 있습니다.
사전 요구 사항
-
Libreswan이 설치되어 있고
ipsec
서비스가 각 노드에서 시작됩니다.
절차
각 노드에서 PKCS #12 파일을 가져옵니다. 이 단계에서는 PKCS #12 파일을 생성하는 데 사용되는 암호가 필요합니다.
# ipsec import nodeXXX.p12
필요한 IPsec
(private)에 대해 다음 세 가지 연결 정의 (private-or-clear) 및No
(clear) 프로파일에 대해 다음 세 가지 연결 정의를 만듭니다.IPsec
# cat /etc/ipsec.d/mesh.conf conn clear auto=ondemand type=passthrough authby=never left=%defaultroute right=%group conn private auto=ondemand type=transport authby=rsasig failureshunt=drop negotiationshunt=drop # left left=%defaultroute leftcert=nodeXXXX leftid=%fromcert leftrsasigkey=%cert # right rightrsasigkey=%cert rightid=%fromcert right=%opportunisticgroup conn private-or-clear auto=ondemand type=transport authby=rsasig failureshunt=passthrough negotiationshunt=passthrough # left left=%defaultroute leftcert=nodeXXXX leftid=%fromcert leftrsasigkey=%cert # right rightrsasigkey=%cert rightid=%fromcert right=%opportunisticgroup
적절한 범주에 네트워크의 IP 주소를 추가합니다. 예를 들어 모든 노드가 10.15.0.0/16 네트워크에 있고 모든 노드는 IPsec 암호화를 준수해야 합니다.
# echo "10.15.0.0/16" >> /etc/ipsec.d/policies/private
예를 들어 특정 노드(예: 10.15.34.0/24)가 IPsec 없이 작동하도록 허용하려면 다음을 사용하여 해당 노드를 private-or-clear 그룹에 추가합니다.
# echo "10.15.34.0/24" >> /etc/ipsec.d/policies/private-or-clear
호스트 정의(예: 10.15.1.2)는 IPsec을 명확한 그룹으로 설정할 수 없는 경우 다음을 사용합니다.
# echo "10.15.1.2/32" >> /etc/ipsec.d/policies/clear
/etc/ipsec.d/policies
디렉터리의 파일은 각 새 노드의 템플릿에서 생성하거나 Puppet 또는 Ansible을 사용하여 프로비저닝할 수 있습니다.모든 노드에는 예외 또는 트래픽 흐름 예상과 동일한 목록이 있습니다. 따라서 두 개의 노드는 IPsec이 필요하고 다른 하나는 IPsec을 사용할 수 없기 때문에 통신할 수 없습니다.
노드를 재시작하여 구성된 메시에 추가합니다.
# systemctl restart ipsec
노드 추가를 완료한 후에는
ping
명령으로 IPsec 터널을 열 수 있습니다. 노드가 열린 터널을 확인하려면 다음을 수행하십시오.# ipsec trafficstatus