Windows VPN 기본 경로에서 호스트 하나 제외하기
전체 터널 프로필이 기본 경로를 소유합니다. 호스트 하나에는 실제 인터페이스의 더 좁은 접두사가 필요하며, 연결할 때마다 다시 추가됩니다.
노트북이 사무실 VPN에 연결되면 프린터의 웹 페이지와 로컬 네트워크에서만 응답하는 인트라넷까지 모든 것이 그 터널을 따라갑니다. 손으로 만든 경로는 한 시간 동안만 문제를 해결하고, 그 뒤 연결이 끊겼다가 돌아오면 예외는 사라져 있습니다. 터널 자체에는 문제가 없습니다. Windows는 라우팅 테이블을 하나만 유지하고, VPN 어댑터는 연결할 때마다 그 테이블에서 자기 몫을 다시 씁니다. 살아남는 것은 어댑터 자체 항목 밖에 있는 것뿐입니다.
터널이 차지하는 항목
테이블을 두 번 기록합니다. 한 번은 터널을 내린 상태, 한 번은 올린 상태로 기록하고 기본 줄을 비교합니다. 프로필이 기본 접두사를 요구하면 어댑터 항목이 테이블에서 가장 넓은 행이므로, 예외는 그것보다 좁아야 합니다. 이것은 접두사 길이에 관한 산술이며 신뢰나 정책에 관한 주장이 아닙니다. 예외가 어느 인터페이스를 지명해야 하는지도 이로써 정해집니다.
계속하기 전에 인터페이스 인덱스와 로컬 게이트웨이를 적어 두십시오. 컴퓨터가 다른 네트워크에 참여하면 둘 다 바뀝니다. 아래 명령은 그것들을 기억이 아니라 컴퓨터에서 읽습니다.
route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30
두 번째 명령은 그 주소가 지금 사용할 인터페이스와 다음 홉을 알려 주며, 마흔 줄을 읽고 짐작하는 것보다 낫습니다. 연결 전후에 실행하면 변경 기록에 붙일 만한 짝을 얻습니다. 두 출력 모두 이 페이지의 나머지에서 쓰이는 숫자를 제공합니다.
호스트 경로는 구체성으로 이긴다
가장 긴 접두사 일치가 승자를 정하므로 물리 게이트웨이를 지나는 /32 터널을 지나는 기본 경로를 터널을 건드리지 않고 이깁니다. 그 주소로 가는 트래픽은 로컬 인터페이스로 나가고 나머지는 기존 경로를 유지합니다. 터널은 여전히 기본 경로를 나르며 그 목적지의 유일한 후보라는 지위만 내려놓습니다. 접두사 길이는 테이블이 제공하는 유일한 지렛대이며, 이 작업에는 그것으로 충분합니다.
구체성은 도메인 이름을 제외하는 뻔한 지름길도 배제합니다. 테이블은 주소를 대조하고 하나의 이름은 여러 주소로 풀릴 수 있기 때문입니다. 먼저 호스트를 풀고, 그다음 그 주소 중 어느 것이 예외를 받을지 정하십시오.
아래에서는 Office 이라는 연결, 로컬 게이트웨이 10.0.0.1 , 인터페이스 7, 목적지 198.51.100.30 를 가정합니다. 이것들은 기본값이 아니라 자리 표시자이며, 위 명령이 실제로 그 컴퓨터가 쓰는 값을 내놓습니다. 이 치환 메모를 변경과 함께 남겨 두어 다음 독자가 숫자를 그대로 베끼지 않게 하십시오.
경로가 다음 재연결보다 오래 살게 하기
Windows는 VPN 연결에 제외 지시를 제공하지 않으므로, 예외는 어댑터가 다시 쓰지 않는 물리 인터페이스에 있어야 합니다. 답처럼 보이는 cmdlet은 반대로 합니다. Add-VpnConnectionRoute 접두사를 터널 안으로 옮기며, 이것은 분할 프로필이 목적지 하나만 나르고 나머지는 로컬에 두어야 하는 거울 경우입니다 여기서 그것에 손을 뻗으면 밖에 두려던 트래픽이 반드시 안으로 들어옵니다.
수동 형태는 명령 하나입니다. 약점은 재연결이 아니라 네트워크 변경입니다.
route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7
이것은 -p 덕분에 재부팅을 견디며, 터널이 나머지를 나르는 동안 주소 하나를 인터페이스 7 밖으로 보냅니다. 노트북을 다른 네트워크로 옮기면 게이트웨이와 인덱스가 모두 낡아서 항목이 조용히 실패합니다. 누가 소유하고 언제 제거해야 하는지 기록하십시오.
연결 스크립트는 더 튼튼한 판본입니다. 항목이 살아남기를 바라는 대신 연결할 때마다 예외를 다시 추가합니다. 아래 두 줄은 터널을 시작하는 것에 속하며 로그온 스크립트에 속하지 않습니다.
rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7
터널을 올리는 무엇이든 두 번째 줄의 올바른 자리이며, rasdial 연결이 맺어진 뒤에야 돌아오므로 경로는 어댑터 자체 항목 뒤에 놓입니다. 절전에서 깨어난 뒤 다시 실행하십시오. 일시 중지가 경로를 떨어뜨리고 터널만 올려 둘 수 있습니다. 작업이 반대라면, 접두사 하나를 터널로 밀어 넣고 나머지는 로컬에 두는 것이라면 Add-VpnConnectionRoute 이 올바른 도구입니다.
라우팅은 프로세스를 고를 수 없다
때로 요구는 목적지보다 좁습니다. 한 프로그램만 로컬 경로를 타고 나머지는 터널 안에 남아야 합니다. 라우팅은 그것을 표현할 수 없습니다. 프로세스가 아니라 주소를 대조하기 때문입니다 쓸 만한 패턴은 문제를 실행기로 밀어 넣습니다.
프로필을 기본 경로에서 떼어 두고 그 한 프로그램을 로컬 인터페이스 주소에 묶어 실행하십시오. 그러면 예외가 실행 명령이 되고 터널은 이미 처리하던 것을 그대로 유지합니다. 라우팅 테이블에서는 아무것도 바뀌지 않으며, 그래서 이것이 재연결을 견딥니다. 이는 터널이 애초에 기본 경로를 가져서는 안 된다는 뜻이기도 하므로, 앞의 설계에 덧대는 것이 아니라 다른 설계입니다.
약점은 기술이 아니라 운영에 있습니다. 프로그램은 항상 래퍼를 거쳐 시작해야 하며, 깨어난 뒤 결속이 빠져 있으면 테이블이 주는 아무 경로나 조용히 택합니다. 일부러 여는 브라우저에는 감당할 만하지만, 터널을 절대 떠나서는 안 되는 것에는 받아들일 수 없습니다.
사용자별 연결도 이것을 해결하지 못합니다. Windows는 연결을 계정에 한정할 수 있지만 라우팅 테이블은 컴퓨터 전체로 남으므로, 기본 경로를 가진 계정 한정 연결은 다른 세션을 포함해 컴퓨터의 모든 프로세스를 여전히 돌려 보냅니다. 범위는 경로의 범위가 계정과 맞을 때에야 실제가 됩니다. 그래서 노트북 하나를 나눠 쓰는 두 사람은 테이블 하나를 나눠 쓰고, 두 번째 사람은 첫 사람이 시작한 터널을 물려받습니다.
예외가 재연결을 견뎠는지 확인하기
실패할 방식 그대로 변경을 시험하십시오. 연결을 끊고, 다시 연결하고, 새 응용 프로그램을 열고, 로컬에 남아야 할 주소와 터널을 써야 할 주소를 하나씩 요청하십시오. 둘 다 연결 상태의 Find-NetRoute 와 비교하십시오.
재연결 뒤에 테이블에서 접두사가 사라졌다면 그것은 형식이 아니라 객체가 잘못된 것입니다. 물리 인터페이스로 옮기고 시험을 반복하십시오. 두 명령 출력을 변경 기록과 함께 남기십시오. 작동하는 상태의 스냅숏은 나중에 설명 한 단락보다 많은 질문에 답합니다. 다음 사람은 연결이 무엇을 만들어 냈는지 알고 싶어 하지, 당신이 무엇을 만들려 했는지 알고 싶어 하지 않습니다.