strongSwan을 이용한 Azure VPN Gateway에 대한 P2S 연결
6342 단어 AzureVPNstrongswan
배경
Azure에서 구축한 가상 머신에 AWS의 EC2 인스턴스에서 액세스하고 싶지만, Azure, AWS 환경의 가상 머신에 글로벌 IP를 할당하는 것은 사내 규정상 금지되어 있으므로 클라우드 플랫폼 간의 통신은 할 수 없다. . . 라는 사태에 조우했습니다.
VPN Gateway간에 S2S 접속할 수 있으면 가장 좋습니다만, 이번은 여러 사정에 의해 strongSwan을 이용해 Azure VPN Gateway에 P2S 접속하게 되었으므로, 그 방법에 대해 기재하고 싶습니다.
전제
※P2S 접속에 대해서는 여기 를 참조
구성
사전 준비
여기의 절차에 따라 Azure VPN 게이트웨이 구성
여기 Azure 포털을 사용하여 규칙 생성을 참조하여 VPN 클라이언트를 다운로드하십시오.
설정
다음 EC2 인스턴스에서 작업
strongSwan 설치
sudo yum install -y strongswan
IPSec 설정
client.p12를/etc/ipsec.d/private/에 복사
Generic 디렉토리에 저장된 VpnSettings.xml 파일을 열고 VPNServer에 설정된 값을 복사합니다
/etc/strongswan/ipsec.conf에 설정 추가
conn azure
keyexchange=ikev2
type=tunnel
leftfirewall=yes
left=%any
leftauth=eap-tls
leftid=%P2SChildCert
right=<VPNServerの値を記載>
rightid=%<VPNServerの値を記載>
rightsubnet=0.0.0.0/0
leftsourceip=%config
auto=add
/etc/strongswan/ipsec.secrets에 설정 추가
# ipsec.secrets - strongSwan IPsec secrets file
: P12 client.p12 '<クライアント証明書のパスワード>'
연결 확인
connection
azure
established successfully라고 표시되면 OKsudo systemctl start strongswan
sudo strongswan up azure
연결 확인 스크립트 만들기
의도하지 않은 VPN 연결이 끊어 졌기 때문에 연결 확인 스크립트 작성
만든 것:
- VPNStartUp.sh
- StartUp.func
- CheckStatus.func
- Logs.func
실행 방법
mkdir logs
nohup ./VPNStartUp.sh &
VPNStartUp.sh
#!/bin/bash
shelldir=`dirname $BASH_SOURCE`
timestamp=`date +%FT%H-%M-%S`
serverIP="<Azure上の仮想マシンIPアドレスを記載>"
logFile="./logs/log_${timestamp}"
#Change Current Directory
cd ${shelldir}
source ./CheckStatus.func
source ./StartUp.func
source ./Logs.func
startUpVPN
checkStatus
StartUp.func
function startUpVPN(){
#Start Strongswan
systemctl restart strongswan
if [ $? -ne 0 ]; then
log "Failed to Start Strongswan."
exit 1
fi
sleep 80
#Up Azure VPN Session
strongswan up azure
if [ $? -ne 0 ]; then
log "Failed to Establish Connection."
exit 1
fi
}
CheckStatus.func
#!/bin/bash
function checkStatus(){
while true
do
sleep 30
ping ${serverIP} -c 5 > /dev/null
if [ $? -ne 0 ]; then
log "Target server is not up"
log "Disconnecting session"
strongswan down azure
startUpVPN
else
log "Target Server is Up"
fi
done
}
Logs.func
function log() {
logtimestamp=`date +%FT%H-%M-%S`
echo "${logtimestamp} $*" >> ${logFile}
}
Reference
이 문제에 관하여(strongSwan을 이용한 Azure VPN Gateway에 대한 P2S 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yasu777666555/items/c5d8f963b2328bfd8b1a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)