StrongSwan을 사용하여 Ubuntu 및 IKEv2 프로토콜을 사용하는 VPN 서버가 있습니다.
bash user.sh
스크립트를 사용하여 클라이언트를 생성했지만 다음과 같은 문제가 발생했습니다.
클라이언트 수가 사용자 1,000명을 초과하면 서버에 연결되지 않으며 서버는 위 명령을 사용하여 계정을 올바르게 생성합니다.
동시에 파일의 내용은 다음과 같습니다 user.sh
.
#!/bin/bash
#copyright all right reserved by hjyy
YOUR_VPN_USERNAME=''
YOUR_PASSWORD=''
YOUR_USER_ID=''
[ -n "$VPN_USERNAME" ] && VPN_USER="$YOUR_VPN_USERNAME"
[ -n "$PASSWORD" ] && VPN_PASSWORD="$YOUR_PASSWORD"
[ -n "$USER" ] && USER_ID="$YOUR_USER_ID"
if [ -z "$VPN_EMAIL" ] && [ -z "$VPN_USER" ] && [ -z "$VPN_PASSWORD" ]; then
echo "VPN credentials not set by VPN_USER. Generating random password..."
echo
VPN_USER="$(LC_CTYPE=C tr -dc 'a-z2-9' < /dev/urandom | head -c 5)"
VPN_PASSWORD="$(LC_CTYPE=C tr -dc '2-9' < /dev/urandom | head -c 5)"
USER_ID="$(LC_CTYPE=C tr -dc '1-9' < /dev/urandom | head -c 8)"
fi
if [ -z "$VPN_USER" ] || [ -z "$VPN_PASSWORD" ]; then
exiterr "All VPN credentials must be specified. Edit the script and re-enter them."
fi
echo "Adding VPN_USER setup in progress... Please be patient."
echo
cd /etc/ || exiterr "Cannot enter /etc/strongswan/."
sudo sh -c "echo ' : RSA ike.ovpadd.com.key
$VPN_USER : EAP \"$VPN_PASSWORD\"' >> /var/lib/strongswan/$VPN_USER.secrets.inc"
sudo sh -c "echo 'include /var/lib/strongswan/$VPN_USER.secrets.inc' >> /etc/ipsec.secrets"
chmod -Rf 775 include /var/lib/strongswan/$VPN_USER.secrets.inc
echo "Copyright all right reserved by securedv.net"
echo "username is: $VPN_USER and password is :$VPN_PASSWORD"
echo "please run this code for delete user after <time> : bash d.sh /var/lib/strongswan/$VPN_USER.secrets.inc <time> "
sudo service strongswan restart
exit 0)
스크립트에 오류가 있나요?
설명드린대로 위의 명령어를 사용하여 계정을 생성하는 것은 문제가 없으나, 숫자가 늘어나면 어느 누구도 서버에 연결할 수 없게 되어 문제를 해결하기 위해 마지막 백업을 사용해야 하는데 이 경우에는 새로 생성된 계정을 잃어버리게 됩니다. 사용자를 만들었습니다.
문제의 원인을 제안해 주실 수 있나요?
답변1
StrongSwan이 연결되지 않는 것과 관련하여 설명한 동작을 기반으로 합니다.새로운 사용자또는 너무 커져 사용자가 단순히 연결할 수 없는 경우 ipsec.secrets
문제는 스크립트의 버그가 아니라고 확실히 말할 수 있습니다.
파일/버퍼/메모리 제한에 도달한 것 같습니다. 실제 문제는 사용자 기반이 현재 설정보다 커졌다는 것입니다. 예를 들어 설정은 소규모 사용자 기반에 이상적일 수 있지만 그렇게 많은 사용자에게는 적합하지 않은 것으로 보입니다.
임시 해결 방법으로 사용자 목록을 여러 VPN 서버로 나누는 것을 고려할 수 있습니다.
하지만 중장기적으로는 RADIUS, LDAP, MySQL, Active Directory 등 중앙 인증 서버를 설정하는 것보다는 ipsec.secrets
,그리고StrongSwan이 인증할 수 있는 새로운 인프라를 구축하세요.
문서에서는 여전히 SQL 플러그인을 실험적인 것으로 분류합니다. PAM 플러그인이 있지만 권장하지는 않습니다.
FreeRadius는 또한 백엔드 LDAP 구성과 통신하며 올바르게 구성되면 더 많은 프로토콜(예: PAP, MSCHAPv2, EAP-PAP)을 이해할 수 있습니다.그리고EAP-MSCHAPv2). RADIUS 프로토콜을 사용하면 회계 데이터를 중앙 지점에 집중시킬 수 있는 추가적인 이점도 제공됩니다. 올바른 설정(예: 선택적인 구성인 MySQL의 FreeRadius 덤프 계정)을 사용하면 VPN을 사용하는 사용자 목록을 매우 쉽게 얻을 수 있습니다.
따라서 더 복잡하더라도 동일한 크기의 서비스를 제공하고 StrongSwan이 FreeRADIUS와 대화하도록 하고자유 반경사용자와 비밀번호를 사용하여 LDAP 백엔드와 통신하세요.
공식 문서에 따르면:
RADIUS를 사용한 인증(FreeRadius를 예로 들어보겠습니다)
EAP-Radius eap-radius 플러그인은 EAP 방법을 직접 구현하지 않지만 클라이언트와의 EAP 세션을 RADIUS 백엔드 서버로 리디렉션합니다. 게이트웨이에서는 EAP 패킷이 IKE 메시지에서 추출되어 RADIUS 프로토콜로 캡슐화되며 그 반대의 경우도 마찬가지입니다. 게이트웨이 자체는 클라이언트와 RADIUS 백엔드 간의 EAP 세션을 어느 정도 투명하게 처리하므로 특정 EAP 방법에 대한 특별한 지원이 필요하지 않습니다.
RADIUS 서버 이 플러그인은 모든 RADIUS 서버에서 작동해야 하며 Windows Server 2008 R2에 포함된 FreeRADIUS 및 NPS 서버를 사용하여 성공적으로 테스트했습니다.
MSK를 제공하는 EAP 방법의 경우 RADIUS 서버는 MPPE 전송/수신 키에 이 키를 포함해야 합니다. 안타깝게도 2.1.10 이전의 FreeRADIUS는 EAP-MSCHAPv2와 함께 사용할 때 이러한 특성을 포함하지 않습니다.
대안을 사용할 수도 있습니다psf, 웹 그래픽 인터페이스를 갖춘 FreeBSD 기반의 오픈 소스 방화벽이지만 여전히 확장 가능하고 유지 관리 가능한 백엔드를 구성하는 데 문제가 있습니다.
또한 FreeRadius+Active Directory를 통해 인증하는 수천 명의 사용자를 위해 여러 pfSense IPsec VPN을 관리하고 있다는 예도 추가하겠습니다. Windows 7~10, MacOS, iOS, Linux 및 Android용 기본 VPN 클라이언트를 사용합니다.
또한 WHMCS와의 통합에 관해: 면책조항 - 잘 모르겠습니다.세계 보건 관리 시스템. 그러나 제 생각에는 이는 VPN 솔루션의 청구에만 해당됩니다. 통합 RADIUS 구성을 위해 MySQL을 사용한 후에도 WHMCS와 사용/청구를 통합하려면 일부 소프트웨어를 개발해야 할 것으로 생각됩니다. 그렇지 않다면 다양한 플랫폼에서 고객 사용 로그를 추출하는 힘든 작업이 훨씬 더 복잡해집니다.