OpenVPN 다중 클라이언트 동일한 게이트웨이

OpenVPN 다중 클라이언트 동일한 게이트웨이

하나의 OpenVPN 서버에 연결해야 하는 두 개의 클라이언트가 있습니다. ifconfig 매개변수에서 두 클라이언트 모두에 대해 동일한 게이트웨이를 사용할 수 있습니까?

Client A config file
[...]
ifconfig 10.0.0.2 10.0.0.1

Client B config file
[...]
ifconfig 10.0.0.3 10.0.0.1

서버 상황은 다음과 같습니다.

tun0
inet 10.10.0.1 destination 10.10.0.2

tun1
inet 10.10.0.1 destination 10.10.0.3

이제 모든 것이 잘 작동하지만 계속해서 문제가 발생할 수 있습니까?

다음과 같이 다른 게이트웨이를 사용하라는 지시를 받았습니다.

Client A config file
[...]
ifconfig 10.0.0.2 10.0.0.1

Client B config file
[...]
ifconfig 10.0.1.2 10.0.1.1

하지만 라우팅 목적을 위해서만 다른 게이트웨이가 필요하다고 생각했습니다. 경로를 추가하고 특정 tun 인터페이스에서 트래픽을 전달하려는 경우 실제로 다른 게이트웨이가 필요하거나 서버가 어느 게이트웨이로 패킷을 보낼지 알 수 없지만, 그렇지 않은 경우 특정 경로가 필요하지 않습니다. 첫 번째 구성을 사용할 수 있습니까?

감사합니다

답변1

가능하고 정확합니다. 게이트웨이 매개변수는 VPN으로 데이터를 보내는 데 사용되는 클라이언트의 구성을 정의하여 IP에서 평소와 같이 라우팅을 정의할 수 있도록 합니다. 패킷이 OpenVPN 프로세스로 전송되면 라우팅이 관리됩니다(다른 OpenVPN 프로세스를 떠날 때까지).

특히 다음을 정의합니다.

ifconfig 10.10.0.3 10.10.0.1

그만큼오직이 명령의 결과는 클라이언트에서 다음 명령을 실행하는 것과 같습니다.

ip address add 10.10.0.3 dev tun0
ip route add 10.10.0.1 dev tun0

그게 다야. 다른 클라이언트, 서버, 외부 시스템 — 이 클라이언트 구성에 대해 다른 사람은 아무도 모릅니다.

게이트웨이가 사용되는 유일한 방법은 다음과 같이 VPN을 향한 경로를 작성하는 것입니다.

ip route add 192.168.0.0/24 via 10.10.0.1

예를 들어 VPN을 통해 이 네트워크에 액세스할 수 있도록 설정합니다. 예를 들어 VPN 서버 및 기타 클라이언트에 대한 경로는 다음과 같이 수행됩니다. 물론 여러 클라이언트가 있는 경우 해당 클라이언트에서 동일한 게이트웨이 주소를 사용할 수 있습니다(예를 들어 동일한 LAN에 있는 이웃 컴퓨터에 대해 자연스럽게 이 작업을 수행합니다).

동일한 내용이 서버에도 적용됩니다. 예를 들어, 단일 컴퓨터에서 여러 개의 VPN을 실행합니다(하나는 UDP를 통해, 다른 하나는 포트 공유 옵션이 있는 포트 443에서 TCP를 통해 실행). 이는 일반 포트를 차단하지만 443을 허용하는 방화벽을 몰래 통과하고 심지어 있는지 확인할 수도 있습니다. 웹서버입니다). 해당 서버는 둘 다 동일합니다.현지의주소가 구성되어 있으며 다음과 같이 다릅니다.원격(어떤 VPN을 통해 패킷을 라우팅할지 설정할 수 있습니다).

이제 직면하게 될 문제에 대해 설명합니다. 물론, 완전한 Linux OpenVPN을 사용하면 문제가 없습니다. Linux, Windows, iOS/iPadOS/macOS 또는 Android 클라이언트 등 "OpenVPN 클라이언트"를 사용하려는 경우 topology설정한 항목에 따라 다릅니다. 토폴로지 에서는 net30이러한 구성이 유효하지 않은 것으로 거부됩니다. 이 경우 클라이언트 주소와 해당 원격 주소는 동일한 /30 서브넷에 속해야 합니다.

답변2

일반적으로 터널과 같은 다른 인터페이스와 같은 지점 간 인터페이스 tun0에는 터널 관리 목적이나 특정 터널 식별을 위해서만 로컬 주소가 필요합니다.

터널 인터페이스를 원격 연결 엔드포인트로 생각하십시오. 이 인터페이스에는 두 가지 목적이 있습니다.다른 쪽 끝. 일반적으로는 사용할 필요가 없습니다.어느두 당사자만 연결된 경우 이와 같은 인터페이스의 주소는 데이터 교환에 관련됩니다. 이 인터페이스를 통해 패킷을 보내기만 하면 다른 쪽 끝으로 전달되며 다른 방법은 없습니다.

일부 타사가 원격 연결 엔드포인트에 도달할 수 있어야 하는 경우 상황은 좀 더 복잡해집니다. 이 끝점에 도달하려면 다음이 필요합니다.원격 주소패킷 대상으로. 반대로 원격 측은 버전을 식별하기 위해 로컬 주소를 사용합니다.다른 쪽 끝필요할 때, 즉 기본 경로를 설치합니다. 그러나 로컬 주소를 모르더라도 터널 인터페이스 자체를 경로 대상으로 사용할 수 있으며 여전히 작동합니다.

따라서 로컬 끝점으로 터널 인터페이스를 식별해야 하는 경우가 아니면(즉, 터널을 통한 특정 동적 라우팅 프로토콜 시나리오의 소스 주소로 사용하기 위해) 원하는 주소를 터널의 로컬 주소로 사용할 수 있습니다. 원격 주소와 동일한 서브넷에 있을 필요도 없습니다.

관련 정보