일반

[Windows] 다중 NIC(LAN카드) 환경에서 Routing Table 설정 - route 명령

Posted 2017. 05. 31 Updated 2019. 10. 21 Views 75462 Replies 2
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

사건의 발단(?)

Windows 7이 설치된 PC 한대를 두 개의 서로 다른 네트워크에 연결하기 위해 NIC(LAN카드)을 한개 더 설치하고, 각각의 NIC에 대해 IP주소와 서브넷마스크, 게이트웨이 설정을 마쳤습니다.

헌데, 한 네트워크로의 접속은 원활히 잘 되는데, 다른 네트워크로의 접속은 아예 안 되거나 일부 기능만 동작하는 문제가 발생했습니다. 예를 들어 웹페이지 접속은 잘 되는데, FTP 접속은 먹통이다.. 라던가. 더 골때리는건, 네트워크 어댑터 설정을 바꿔서 어쩌다가 잘 되다가도, PC를 재부팅하면 다시 랜덤하게 안 되는 현상이 반복되는 것이었습니다..-_-a

전형적으로 디버깅하기 어려운 '됬다 안 됬다 하는' 문제였기 때문에 그 원인을 발견하기까지 상당한 삽질 과정을 겪었습니다. 그러다가 우연히 잘 되는 네트워크 어댑터를 비활성화(사용 안 함) 시켰더니, 반대편 네트워크에서 발생하던 자잘한 문제들이 말끔히 사라졌습니다.

뭔가 감이 잡혀서 Wireshark를 켜고 패킷들을 째려봤더니, DNS Request 패킷이 반대편의 엉뚱한 NIC을 통해 나가고 있는; 매우 아름다운 현상을 목격할 수 있었습니다.[...] 애초에 잘못된 게이트웨이(Gateway)로 패킷을 날리니, 안 될 수밖에...없었던거죠. 그렇다고 일정 횟수 시도 후 다른 NIC으로도 시도하는가 하면, 그것도 전혀 아니었습니다..

이로부터 Windows에서 패킷을 올바른 게이트웨이로 라우팅하는 과정에 문제가 있는 것으로 판단하고, 여기서 소개할 조치들을 취한 결과 양쪽 네트워크를 모두 원활히 사용할 수 있었습니다.

 

▶ 이 글에서는 복수의 NIC(LAN카드)가 설치된 Windows PC에서 게이트웨이의 주소에 따라 올바른 NIC을 선택해서 패킷을 라우팅하도록 설정하기 위한 방법에 대해 다룹니다.

 

패킷을 잘못된 게이트웨이로 보내는 이유...?

Windows에서도 역시 내부에서 발생한 패킷을 라우팅하기 위해 자체적으로 Routing Table을 관리하고 있습니다.

대개 데스크톱 PC에는 LAN카드가 하나만 설치되어 있고, 이 경우에는 목적지가 Loopback 네트워크(127.x.x.x)가 아닌 패킷들은 유일한 NIC을 통해 외부로 토스하면 되므로 Routing Table을 신경쓰지 않아도 됩니다. 네트워크 어댑터 설정만 올바르게 하면 Routing Table이 자동으로 세팅되며, 이를 그대로 사용하면 됩니다.

하지만, PC에 LAN카드가 두 개 이상 존재하는 경우에는 상황이 많이 달라집니다. 이 경우, (물리적)게이트웨이가 설치된 LAN카드의 갯수만큼 존재하게 되는데, Windows에서 자동으로 세팅된 Routing Table을 가지고는 패킷에 따른 올바른 라우팅을 해줄 수 없게 됩니다. 즉, Routing Table의 상단에 위치하는 Default Gateway가 무작위로(정확히는 부팅 후 네트워크 연결이 먼저 끝나는 LAN카드로 설정됨) 정해지기 때문에 문제가 발생합니다.

Default Gateway가 뭐가 되든지간에 패킷의 목적지에 따라서 게이트웨이를 선택해 줘야 하므로, 네트워크 마스크를 활용하도록 Routing Table을 세팅해야 합니다. 즉, Windows에서 게이트웨이 주소에 대해 자동으로 설정되는 네트워크 마스크가 Wildcard(0.0.0.0) 이기 때문에 발생하는 문제입니다.

 

#  Network  Mask     Gateway
----------------------------
1  0.0.0.0  0.0.0.0  x.x.x.x  <-- 이게 외부로 나가는 패킷을 다 먹어버림..
2
3
...

 

먼저 세팅된 LAN카드에 붙은 게이트웨이로 라우팅하는 레코드가 Routing Table의 최상단에 위치하고, 이 레코드의 네트워크 마스크가 0.0.0.0 이므로 외부로 나가는 패킷의 목적지 IP가 어떻게 되든지 항상 Rule Match가 되어서 이 LAN카드로만 패킷이 나가게 됩니다.

 

영구 경로를 수동으로 설정하여 문제 해결하기

외부로 나가는 패킷이 하나의 게이트웨이로만 향하는 이 문제를 해결하는 방법은 원리상으로는 매우 간단합니다. 앞서 살펴본 게이트웨이 레코드에서 네트워크 주소와 네트워크 마스크를 적절히 설정하여 해당 네트워크 주소에 해당하는 패킷만 해당 게이트웨이로 빠져나가도록 하면 됩니다.

이 절에서 제시하는 해결 방법을 설명하기 위해, 실제 예시를 들어 설명하도록 하겠습니다.

다음은 하나의 PC에 두 개의 NIC(LAN카드)이 존재하여 각각 서로 다른 네트워크에 연결되어 있는 상황입니다. 지금부터 이 PC에서 두 개의 네트워크에 모두 원활히 접속하기 위한 Routing Table 세팅 방법에 대해 설명하도록 하겠습니다.

Example Topology.png
▲ 2개의 NIC을 통해 2개의 독립 네트워크에 연결된 PC

 

1. 명령 프롬포트(CMD)를 관리자 권한으로 실행합니다.

2. 현재 동작중인 라우팅 테이블을 확인하기 위해 다음 명령을 실행합니다.

route print

3. 출력된 내용의 하단의 '영구 경로' 항목을 보면, 다음과 같이 상단에 IP주소와 Mask가 모두 0.0.0.0 인 레코드가 위치하고 있을 것입니다.
이 레코드의 게이트웨이 주소(x.x.x.x)에는 '잘 동작하던' 네트워크의 게이트웨이 주소가 써져 있을 것입니다. 이 레코드는 네트워크 어댑터 설정에서 IP주소와 Mask, 게이트웨이 주소를 입력하면 자동으로 삽입되는 레코드인데, 이 때문에 패킷이 잘못된 LAN카드로 전달되는 것입니다.

...
===========================================================
영구 경로:
 네트워크 주소   네트워크 마스크   게이트웨이 주소   메트릭
 0.0.0.0        0.0.0.0         x.x.x.x         기본값
...
...
===========================================================
...

4. 영구 경로(Persistent Route) 테이블을 재설정하기 위해 다음 명령으로 일단 테이블을 전부 날려줍니다. (참고: 이 명령을 실행하면 연결된 네트워크가 모두 단절된 상태가 됩니다.)

route -f

5. 게이트웨이가 연결된 NIC의 Interface번호를 확인하기 위해, 위 2.에서 출력된 내용의 상단에 있는 '인터페이스 목록' 부분을 확인합니다. 다음과 비슷한 내용이 출력되었을텐데, 이 예시에서는 NIC#1과 NIC#2의 Interface 번호는 각각 15와 14입니다.

=========================================================
인터페이스 목록
 15...xx xx xx xx xx xx ......~~~~(NIC#1의 모델명)~~~~
 14...xx xx xx xx xx xx ......~~~~(NIC#2의 모델명)~~~~
 11...xx xx xx xx xx xx ......Microsoft 6to4 Adapter
 12...xx xx xx xx xx xx ......Microsoft ISATAP Adapter #2
 13...xx xx xx xx xx xx ......Microsoft ISATAP Adapter #4
=========================================================
...

 

5. 다음 명령으로 두 개의 네트워크에 대한 게이트웨이 Rule Record를 추가해 줍니다.

route add -p 192.168.1.0 mask 255.255.255.0 192.168.1.254 IF 15
route add -p 10.0.0.0 mask 255.0.0.0 10.0.0.254 IF 14

route add 명령의 형식을 다음과 같습니다. 참고로, '-p'는 재부팅 후에도 Record를 유지하기 위한 옵션입니다.

route add -p {네트워크 주소} mask {네트워크 마스크} {게이트웨이 주소} IF {Interface 번호}

 

6. [제어판 > 네트워크 및 공유 센터 > 어댑터 설정 변경]에서 각각의 LAN카드 설정에 들어가보면 게이트웨이 주소가 모두 공란으로 초기화되어 있을텐데, 이들을 올바르게 입력해주도록 합니다.

 


Articles

1 2 3 4 5 6 7