공유 VPN 계정 세션 한도: 기기 하나만 끊기는 이유
공유 로그인이 동시 세션 한도에 도달해 기기 하나가 끊깁니다. 클라이언트 메시지를 읽고, 서버에서 세션을 세고, 그다음 ID 모델을 고치십시오.
이미 휴대폰에서 돌고 있는 계정에 두 번째 노트북을 추가하면 일 분 안에 휴대폰의 터널이 끊깁니다. 또는 새 기기가 연결을 끝내지 못하고 클라이언트가 시간 초과 대신 정책 메시지로 끝납니다. 두 경우 모두 네트워크는 정상이며, 그 위에서 입장 결정이 내려졌습니다. 공유 로그인은 하나의 ID이고, 대부분의 VPN 서비스는 보유한 기기 수가 아니라 그 ID를 셉니다. 저는 클라이언트 화면에서 바깥으로 조사합니다. 어느 계층이 거부했는지 보통 그 화면에 나오기 때문입니다.
네트워크를 건드리기 전에 클라이언트 메시지를 읽으십시오
세 가지 실패는 비슷해 보이지만 같지 않습니다. 시간 초과는 패킷이 어디에도 닿지 않았다는 뜻입니다. TLS나 인증서 오류는 끝점이 응답했지만 핸드셰이크가 실패했다는 뜻입니다. 인증이나 정책 거부는 게이트웨이가 자격 증명을 읽고 나서 거부했다는 뜻입니다. 세션 한도 이야기에 속하는 것은 세 번째뿐이므로 그것부터 확정하십시오.
OpenVPN 클라이언트는 흥미로운 줄을 로그 창에 남깁니다. 뒤따르는 재시도 루프가 아니라 마지막 연결 시도까지 스크롤하고, AUTH_FAILED나 전달된 사유 문자열을 찾으십시오. 클라이언트는 설명 없이 일반적인 거부를 보고하는 경우가 많으므로 다음 단계는 서버이지 클라이언트 설정이 아닙니다. 공급자 앱은 더 나쁩니다. 기기 한도 메시지는 유용하지만 두 초 뒤에 무너지는 연결은 정책 결정이지 잘못된 암호가 아닙니다. 어느 경우든 기기 이름과 정확한 시각을 적어 두십시오. 운영자는 그 짝을 접속 기록과 몇 초 만에 대조할 수 있습니다.
서버가 세는 곳에서 세션을 세십시오
중요한 카운터는 게이트웨이에 있습니다. 서버가 --status로 시작되면 OpenVPN은 상태 파일을 쓰고, 연결된 각 클라이언트를 공통 이름, 실제 주소, 트래픽 카운터와 함께 나열합니다.
cat /var/log/openvpn-status.log
# or query the management socket directly
echo "status 2" | socat - UNIX-CONNECT:/run/openvpn/server.sock
같은 공통 이름을 가진 두 줄은 하나의 인증서 아래에 있는 두 개의 살아 있는 세션입니다. 기본적으로 OpenVPN은 둘 다 유지하지 않습니다. --duplicate-cn이 없으면 같은 인증서를 쓰는 두 번째 연결이 첫 번째를 대체하고, 오래된 기기는 터널을 잃습니다. 그 대체가 바로 ID 한도의 서명입니다. 무작위 패킷 손실은 다른 기기가 나타나는 바로 그 순간에 정확히 기기 하나만 예의 바르게 끊지 않습니다.
WireGuard에는 살펴볼 세션 테이블이 없습니다. wg show wg0는 피어와 마지막 핸드셰이크를 출력하고, 등록된 각 기기는 고유한 키를 가진 피어입니다. 그곳의 공유 계정은 여러 머신에 복사된 구성 파일이며, 한도는 그 구성을 배포하는 것에서 생깁니다. 공급자 포털, 좌석 수, 또는 공인 주소에 묶인 규칙입니다. 직접 게이트웨이를 운영한다면 OpenVPN 2.6 설명서가 서버 측 옵션을 문서화합니다.
하나의 메시지 뒤에 숨은 네 가지 한도를 분리하십시오
공유 계정 티켓의 대부분은 네 가지 입장 결정 중 하나입니다. 클라이언트는 이를 구별할 수 없지만 어느 기기가 실패하는지의 패턴은 구별할 수 있습니다.
같은 ID, 두 번째 연결. 새 기기는 작동하고 오래된 기기는 같은 순간에 죽습니다. 게이트웨이나 계정 시스템이 적용하는 ID별 동시성 규칙입니다. 아무것도 고장 나지 않았고, 서비스는 자기 정책대로 하고 있습니다.
요금제의 좌석 또는 기기 수. 처음 기기들은 연결된 채로 남고 다음 기기는 거부되며 나머지는 계속 돕니다. 클라이언트를 바꾸기 전에 공급자의 기기 목록을 확인하십시오. 라이선스 한도는 클라이언트 쪽에서 고칠 수 없습니다.
공인 주소에 묶인 상한. 한 대의 가정용 라우터 뒤에 있는 노트북 두 대는 실패하지만 같은 로그인이 휴대폰 핫스폿에서는 됩니다. 시험하려면 두 번째 기기를 다른 네트워크로 옮기십시오. 거기서 연결된다면 주소별 규칙이나 NAT 규칙을 보는 것이지 계정 수가 아닙니다.
서버 전체 최대치. 게이트웨이의 모든 사용자가 같은 혼잡 시간에 실패하며 어제까지 멀쩡했던 계정도 포함됩니다. OpenVPN의 --max-clients가 그렇게 동작하며, 등록한 기기와는 아무 관계가 없습니다.
좌석을 더 사기 전에 오래된 세션을 정리하십시오
나쁘게 끝난 세션이 아직 자리를 차지할 수 있습니다. RADIUS 회계는 세션이 시작될 때 기록을 쓰고 세션이 멈출 때 닫습니다. 클라이언트가 사라지면 중지가 오지 않아 서버는 중간 갱신이나 시간 초과가 만료될 때까지 세션을 유지합니다. FreeRADIUS 게이트웨이에서는 열린 기록을 볼 수 있습니다.
SELECT username, acctsessionid, acctstarttime
FROM radacct WHERE acctstoptime IS NULL;
시작 시각이 오래되었고 트래픽이 없는 열린 기록은 이미 떠난 기기의 것입니다. 한도가 실제였다고 가정하기 전에 운영자 콘솔이나 연결 해제 요청으로 닫으십시오. Wi-Fi가 모바일로 넘길 때 휴대폰은 다시 연결되고, 노트북은 OS 안에서 터널 하나와 공급자 앱 안에서 또 하나를 돌릴 수 있으며 이는 한 머신에서 두 세션으로 셉니다.
함께 도는 기기 사이에서 하나의 ID를 공유하지 마십시오
항구적인 수정은 구조적입니다. 각 기기에 고유한 공통 이름을 가진 자체 인증서 또는 자체 계정을 주고, 어느 사람과 어느 머신이 그것을 가졌는지 기록하십시오. OpenVPN에서는 기기마다 클라이언트 인증서 하나를 뜻하며, 인수 동작을 원하지 않으면 --duplicate-cn은 꺼 둡니다. WireGuard에서는 기기마다 키 쌍 하나를 그 자리에서 만들고 절대 복사하지 않습니다.
기기 상한을 피하려고 프로필을 복제하면 폐기가 깨집니다: 복사본 하나를 폐기하면 그것을 공유하는 모든 기기가 끊기고, 로그는 어느 머신이 무엇을 했는지 더 이상 말하지 못합니다. 한도가 상업적이라면 정직한 수정은 좌석 추가이고, 내부 정책이라면 같은 접근 권한의 두 번째 ID를 요청하십시오.
정해진 순서로 확인하십시오
매번 같은 방식으로 수리를 시험해 결과가 의미를 갖게 하십시오.
- 모든 기기에서 로그아웃하고 서버의 활성 목록이 비었는지 확인하십시오. 지워지지 않는 항목은 오래된 세션이지 클라이언트 결함이 아닙니다.
- 기기를 하나씩 연결하고 연결 사이에 목록을 보십시오.
- 둘이 함께 돌아야 한다면 두 행이 서로 다른 ID를 지니고 둘 다 핸드셰이크를 새로 유지하는지 확인하십시오.
- Wi-Fi에서 모바일로 넘어간 뒤 반복하십시오. 재연결이 두 번째 기록을 만들 수 있습니다.
새 기기가 연결될 때 오래된 기기가 여전히 끊긴다면 게이트웨이는 귀하에게 예외가 주어지지 않은 ID별 규칙을 적용하고 있습니다. 운영자에게 기기 이름, 타임스탬프, 활성 세션 목록을 가져가십시오. 그러면 모호한 불평이 그들이 답할 수 있는 정책 질문이 됩니다.