다중 클라이언트 OpenVPN 구성의 경우 server.conf
관련 문서(참고)에서 찾을 수 있습니다.
서버 모드를 구성하고 클라이언트 주소를 얻을 수 있는 VPN 서브넷을 OpenVPN에 제공합니다. 서버는 10.8.0.1을 취하고 나머지는 클라이언트에 제공됩니다. 모든 클라이언트는 10.8.0.1의 서버에 액세스할 수 있습니다.
서버 10.8.0.0 255.255.255.0
따라서 우리가 이해한 바로는 실제로 256개의 주소를 풀에 할당했으며 사용 가능한 첫 번째 주소는 10.8.0.1이고 마지막 사용 가능한 주소는 10.8.0.254여야 합니다. 이 중 첫 번째 주소(10.8.0.1)는 위에서 명확하게 설명한 대로 서버에 할당됩니다.
또한 클라이언트 구성 파일에서 비슷한 것을 발견했습니다.
서버의 호스트 이름/IP 및 포트. 서버 간의 로드 균형을 조정하기 위해 여러 개의 원격 항목을 가질 수 있습니다.
원격 내 서버-1 1194
내 추론에 따르면 마지막 줄은 다음과 같이 작성되어야 합니다.
remote 10.8.0.1 1194
서버 주소와 일치합니다.
(이 진술은 올바르지 않습니다.이 답변.)
이제 내 질문은 서버가 사용 가능한 주소 풀(10.8.0.2-10.8.0.254)에서 클라이언트에 주소를 할당하기 위해 어떤 알고리즘을 따르는가 하는 것입니다.
첫 번째 클라이언트는 .2 주소를 얻고 다음 클라이언트는 .3 주소를 얻습니까? 아니면 주소가 무작위로 할당되나요? 아니면 다른 것, 0.5, 9.라면 왜 그럴까요?
답변1
OpenVPN은 풀에서 무료 주소를 찾는 데 사용하는 정확한 알고리즘을 문서화하지 않습니다. 이는 무료 주소인 한 실제로 중요하지 않은 구현 세부 사항이기 때문입니다. 그러나 ifconfig_pool_find
다음의 함수를 보면 사용되는 알고리즘을 이해할 수 있습니다 pool.c
.
- 모드 인 경우
duplicate_cn
첫 번째 무료 주소를 사용하세요. - 동일한 클라이언트가 이전에 사용했던 IP 주소가 아직 사용 가능한 경우 이를 선택하세요.
- 그렇지 않으면 최근에 가장 적게 사용된 무료 주소가 풀에서 선택됩니다.
다른 질문은 다음과 같습니다.
remote 10.8.0.1 1194
remote
아니요, 절대 주소 로 사용하시면 안 됩니다 . 터널 자체를 통해 터널 서버에 접속하려고 하는데, 이 시점(초기화 중)에는 터널이 설정되지 않았기 때문에 서버에 접속할 수 없습니다. 어떻게든 터널을 설정할 수 있다면 라우팅 루프가 있는 것입니다.
터널을 설정하려면 터널을 활용하지 않고도 터널의 다른 끝점에 연결할 수 있는 IP 주소가 필요합니다. 이는 일반적으로 이 엔드포인트에 액세스할 수 있는 공용 인터넷 주소입니다. 그것이 바로 당신이 주어야 하는 것입니다 remote
.