OpenVPN에서 고정 IP(클라이언트 측)를 설정하는 방법은 무엇입니까?

OpenVPN에서 고정 IP(클라이언트 측)를 설정하는 방법은 무엇입니까?

저는 많은 작은 장치(OpenWRT 실행)로 VPN 네트워크를 설정하고 있습니다. 내 사용 사례에서는 장치가 모두 숫자로 식별되며 장치의 IP 주소가 ID와 일치하기를 원합니다(예: 장치 번호 6은 XXX6에 IP를 갖습니다).

알고 있지만 client-config-dir내 모든 장치가 동일한 인증서( 활성화됨) ifconfig-push를 사용하기 때문에 사용할 수 없습니다 . duplicate-cn이는 각 장치에 대해 하나의 인증서를 생성하는 것이 너무 제한적이므로 요구 사항입니다(또한 시스템에 장치를 추가하는 경우 VPN 서버의 구성을 변경하고 싶지 않습니다).

클라이언트 구성 파일에서 IP 주소를 설정할 수 있습니까? 문서에서 특정 주제에 대한 내용을 찾을 수 없었습니다. 그리고 제가 시도한 모든 것이 성공하지 못했습니다.

기본적으로 제가 염두에 두고 있는 것은 다음과 같습니다.

  • 클라이언트 VPN 서버에 연결하고 특정 주소를 요청합니다("ip: 172.16.0.22").
  • 주소가 이미 사용된 경우 핸드셰이크가 실패합니다. 무료인 경우 고객에게 이전에 요청한 주소가 제공됩니다.

답변1

구성 옵션을 사용하여 이 작업을 수행할 수 있어야 합니다 ifconfig-pool-persist. 파일을 미리 구성하고 seconds = 0OpenVPN에 파일 읽기만 하도록 설정할 수 있습니다.

감사 목적으로 VPN을 통해 연결할 때 동일한 사용자에게 동일한 IP가 할당되도록 하기 위해 이를 사용합니다.

로부터매뉴얼 페이지:

--ifconfig-pool-persist file [초] ifconfig-pool 데이터를 초 간격(기본값=600)으로, 그리고 프로그램 시작 및 종료 시 파일에 유지/지속 해제합니다. 이 옵션의 목표는 클라이언트(일반 이름으로 표시됨)와 ifconfig-pool에서 클라이언트에 할당된 가상 IP 주소 간의 장기적인 연결을 제공하는 것입니다. --persist-tun 옵션을 효과적으로 사용할 수 있기 때문에 장기적인 연결을 유지하는 것은 클라이언트에게 좋습니다.

파일은 , 형식의 쉼표로 구분된 ASCII 파일입니다.

초 = 0이면 파일은 읽기 전용으로 처리됩니다. 이는 파일을 구성 파일로 처리하려는 경우에 유용합니다.

이 파일의 항목은 OpenVPN에서 일반 이름과 IP 주소 간의 과거 연결을 기반으로 한 제안으로만 처리됩니다. 주어진 일반 이름이 항상 주어진 IP 주소를 수신한다는 것을 보장하지 않습니다. 할당을 보장하려면 --ifconfig-push를 사용하세요.

답변2

회사 VPN을 설정하고 3가지 다른 사용자 클래스에 대해 별도의 액세스 정책을 설정하려고 한다고 가정합니다.

System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only

우리가 취할 기본 접근 방식은 (a) 각 사용자 클래스를 자체 가상 IP 주소 범위로 분리하고, (b) 클라이언트의 가상 IP 주소를 차단하는 방화벽 규칙을 설정하여 시스템에 대한 액세스를 제어하는 ​​것입니다.

이 예에서는 직원 수는 가변적이지만 시스템 관리자는 한 명, 계약자는 두 명이라고 가정합니다. 우리의 IP 할당 방식은 모든 직원을 IP 주소 풀에 배치한 다음 시스템 관리자와 계약자에게 고정 IP 주소를 할당하는 것입니다.

이 예의 전제 조건 중 하나는 특정 방화벽 규칙을 정의할 수 있는 기능을 제공하는 OpenVPN 서버 시스템에서 실행되는 소프트웨어 방화벽이 있다는 것입니다. 이 예에서는 방화벽이 Linux iptables라고 가정합니다.

먼저 사용자 클래스에 따라 가상 IP 주소 맵을 생성해 보겠습니다.

Class   Virtual IP Range    Allowed LAN Access  Common Names  

Employees   10.8.0.0/24     Samba/email server at 10.66.4.4     [variable]

Sys Admins  10.8.1.0/24     Entire 10.66.4.0/24 subnet  sysadmin1

Contractors 10.8.2.0/24     Contractor server at 10.66.4.12     contractor1, contractor2

다음으로 이 맵을 OpenVPN 서버 구성으로 변환해 보겠습니다. 우선, 모든 클라이언트가 10.66.4.0/24 서브넷을 사용할 수 있도록 위의 단계를 따랐는지 확인하세요(클라이언트가 전체 10.66.4.0/24 서브넷에 액세스할 수 있도록 라우팅을 구성하는 동안, 그런 다음 위의 정책 테이블을 구현하기 위해 방화벽 규칙을 사용한 액세스 제한).

먼저, 나중에 방화벽 규칙에서 참조할 수 있도록 tun 인터페이스에 대한 정적 장치 번호를 정의합니다.

dev tun0

서버 구성 파일에서 직원 IP 주소 풀을 정의합니다.

server 10.8.0.0 255.255.255.0

시스템 관리자 및 계약자 IP 범위에 대한 경로를 추가합니다.

route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0

특정 시스템 관리자 및 계약자에게 고정 IP 주소를 할당할 예정이므로 다음과 같은 클라이언트 구성 디렉터리를 사용합니다 ccd.

client-config-dir ccd

ccd이제 다음과 같이 직원이 아닌 각 VPN 클라이언트에 대한 고정 IP 주소를 정의하기 위해 특수 구성 파일을 하위 디렉터리에 배치합니다 .

ccd/sysadmin1파일:

    ifconfig-push 10.8.1.1 10.8.1.2

ccd/contractor1파일:

    ifconfig-push 10.8.2.1 10.8.2.2

ccd/contractor2파일:

    ifconfig-push 10.8.2.5 10.8.2.6

ifconfig-push 주소의 각 쌍은 가상 클라이언트와 서버 IP 끝점을 나타냅니다. Windows 클라이언트 및 TAP-Windows 드라이버와 호환되도록 하려면 연속적인 /30 서브넷에서 가져와야 합니다. 특히 각 끝점 쌍의 IP 주소에 있는 마지막 옥텟은 이 집합에서 가져와야 합니다.

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

이것으로 OpenVPN 구성이 완료됩니다. 마지막 단계는 방화벽 규칙을 추가하여 액세스 정책을 마무리하는 것입니다.

원천:https://openvpn.net/index.php/open-source/documentation/howto.html#policy

답변3

@jas_raj와 같은 구성에 문제가 있었습니다. 이제 나는 다음을 하고 있습니다:

1) /etc/openvpn에서 새 폴더를 만듭니다. 예를 들어 "디렉토리"

2) server.conf 추가 라인 "클라이언트 구성 디렉터리 디렉터리/"

3) "dir" 안에 **인증서에 작성한 것과 동일한 이름**으로 새 파일을 만들고 다음을 입력해야 합니다.

ifconfig-push IP 마스크

예를 들어: ifconfig-푸시 10.0.0.10 255.0.0.0

관련 정보