방화벽 규칙은 예를 들어 192.168.0.200부터 192.168.0.255까지 첫 주소와 마지막 주소를 받아들이지만, 경로는 받아들이지 않습니다. 경로 항목에는 네트워크와 마스크를 넣을 자리만 있으므로, 연속된 범위는 OpenVPN 가 설치하기 전에 하나 이상의 정렬된 프리픽스가 되어야 합니다. route-nopull을 정렬되지 않은 구간과 짝지은 프로필이 바로, 파일은 파싱되지만 어떤 경로도 일치하지 않기 때문에 실패가 보통 숨는 곳입니다. 블록을 바로잡으면 실패가 한 명령에서 드러납니다.

속설: 범위는 경로다

라우팅 테이블은 네트워크와 마스크 쌍을 저장하고 가장 긴 일치를 고르므로, 시작과 끝이 있는 구간은 머물 자리가 없습니다. 256개 주소를 아우르는 하나의 프리픽스는 .0부터 .255까지 덮고, 그 절반 크기는 .0부터 .127까지 덮으며, 그런 가장자리에 정렬된 범위만 한 단계로 매핑됩니다. 나머지는 모두 블록으로 잘라야 합니다. 더 작은 경로도 여전히 원래 구간을 뜻합니다.

프리픽스에 정렬되지 않은 범위는 압축된 경로가 아닙니다. 다른 종류의 대상이며, 그것을 경로로 다루는 곳에서 조용한 실패가 시작됩니다.

정렬은 산술이지 스타일이 아닙니다

블록 크기는 프리픽스 길이가 정합니다. /29는 8로 나누어떨어지는 주소에서만 시작할 수 있고, /28은 16으로 나누어떨어지는 주소에서, /27은 32로 나누어떨어지는 주소에서 시작합니다. 블록을 경계에서 옮기면 마스크는 의도한 것과 다른 주소 집합을 덮습니다.

낮은 쪽 끝에서 합산합니다. 각 단계에서 범위의 끝을 넘지 않는 가장 큰 정렬된 블록을 잡고, 그다음 주소부터 이어 갑니다. 블록은 각 블록이 이전 블록이 멈춘 곳에서 시작하므로 겹칠 수 없습니다.

이 일을 손으로 하는 두 사람은 같은 결과에 도달해야 합니다. 불일치는 누군가 정렬되지 않은 시작을 허용했다는 뜻입니다.

200부터 255까지 작업하기

StepStartBlock that fitsLine for the profile
1.200, multiple of 8/29, 8 addresses192.168.0.200 255.255.255.248
2.208, multiple of 16/28, 16 addresses192.168.0.208 255.255.255.240
3.224, multiple of 32/27, 32 addresses192.168.0.224 255.255.255.224

범위는 .200에서 시작하며 8의 배수이므로, 첫 블록은 .200부터 .207까지의 /29입니다. 이 여덟 주소 다음의 첫 빈 값은 .208이고 16으로 나누어떨어지므로 /28이 .208부터 .223까지 차지합니다. 남는 것은 .224부터 .255까지이며, 32의 배수에서 시작하는 서른두 개 주소이므로 /27입니다. 그 세 줄이 분해의 전부입니다.

산문이 아니라 경로 줄로 쓰세요. 첫 줄만 가진 프로필은 여덟 주소를 덮고 나머지를 터널 밖에 둡니다.

route-nopull
route 192.168.0.200 255.255.255.248
route 192.168.0.208 255.255.255.240
route 192.168.0.224 255.255.255.224

마지막 블록에는 경계 확인이 필요합니다. 192.168.0.224/27 안에서 .224는 네트워크 주소이고 .255는 브로드캐스트 주소이므로, .255에서 응답해야 하는 호스트는 프리픽스에 덮인 채로 여전히 닿을 수 없습니다. 그 호스트를 옮기거나, 블록을 라우팅하고 기대하는 대신 범위를 다르게 나누세요.

route-nopull이 그림에 하는 일

서버가 밀어 넣는 경로가 원하지 않는 경우에만 route-nopull을 추가하세요. 이 지시문이 없으면 밀어 넣은 경로와 이 줄들이 공존하고 가장 구체적인 프리픽스가 이깁니다. 이것이 있으면 밀어 넣은 DNS와 DHCP 옵션도 사라지므로, 내부 이름 해석에는 자체 구성이 필요합니다. 이 부작용은 경로 문제를 고치려고 지시문을 추가한 사람들을 놀라게 합니다.

기본 반사가 아니라 올바른 이유로 추가하세요. 밀어 넣은 경로를 제거하는 것은 DNS 결과를 수반하는 정책 결정입니다. 서버가 같은 세 프리픽스를 밀어 넣을 수 있다면 그렇게 두고, 클라이언트 쪽 사본을 지워 한 소유자가 목록을 통제하게 하세요.

흔한 실수를 잡는 확인

모든 마스크가 켜진 비트의 연속된 나열인지 확인하세요. 255.255.255.248은 통과하고 255.255.255.200은 실패하며, 연속되지 않은 마스크는 거부되거나 잘못 읽힙니다. 그다음 각 블록의 주소 하나에 대한 경로를 확인하세요.

ip route get 192.168.0.205
ip route get 192.168.0.220
ip route get 192.168.0.240

모든 응답은 터널 인터페이스를 지목해야 합니다. 물리 어댑터를 지목하는 결과는 그 줄이 설치되지 않았다는 뜻이며, 이는 프로필이 연결된 뒤 데스크톱 네트워크 관리자가 표를 다시 쓸 때 자주 일어납니다.

목록의 소유자를 하나로 정하세요. 서버가 같은 프리픽스를 밀어 넣을 수 있다면 밀어 넣고 클라이언트 쪽 편집을 제거하세요. 소유자가 하나면 오타가 머물 곳도 한 곳이며, 어떤 주소가 터널 안에 있는지에 대해 클라이언트와 서버가 어긋날 수 없습니다.

관련 글