%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 많은 작은 장치(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 = 0
OpenVPN에 파일 읽기만 하도록 설정할 수 있습니다.
감사 목적으로 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