PC 1대에서 복수 네트워크 동시에 사용하기

Computer/ETC 2009. 3. 27. 01:00

사실 어찌저찌 하다보면 아래와 같은 상황은 자주 발생한다.
차단된 Network를 우회하기 위해, 아니면 메인 네트워크의 throughput 등에 영향을 주지 않고 특정 네트워크에 대한 테스트를 한다거나....등등등.
향후 3G network, WiBro, 기타 WIFI 등 가능한 모든 interface에 대해 아래와 같이 G/W 변경으로 사용 가능하다.

윈도우에서 복수의 네트워크를 연결하고 나면 default gateway가 변경되어 연결 상태가 원하지 않는 우선순위를 갖게 되는 경우가 있다.
예를 들어,
1. 나는 (사내망) 유선을 메인으로, 무선을 특정 프로그램용으로 사용하고 싶은 경우
2. 유선을 잡은 상태에서 무선을 연결하고 나니,
3. default gateway가 무선의 것으로 바뀌어 사내망 접속이 안된다거나 하는 등의.

이런 경우에는 아래 포스트를 참고하여 default gateway를 변경해준다.
http://geniuskch.tistory.com/entry/Windows에서-default-gateway-값-변경

================================================================================
노트북 PC 에서 유선 랜과 무선 랜을 동시에 사용하게 되면,
(라우팅이나 환경에 따라 다르겠지만) 통상 유선을 이용해서 네트워크를 사용하게 되더군요.

우선 제 의도는 특정 IP 의 경우에만 무선 랜을 이용하고 나머지는 유선 랜을 이용해서 인터넷을 하기 위함
이었습니다. 이유는 아래의 상황 때문이었죠.

1. 상황은 이렇습니다.

유선 네트웍에는 사내 내부망이 연결되어 있고, 무선 네트웍에는 (공개된 AP의) 외부망으로 연결되어 있습니다.

문제는 내부망의 경우 특정 사이트의 접속을 막아 놓은 상태이기 때문에
MSN 메신저와 네이트온을 포함한 여러 메신저 접속 및 그 외 몇몇 사이트에 접근할 수 없었던 거죠.

서버 접속이나 업무를 위해서는 내부망을  반드시 이용할 수 밖에 없는 실정이다 보니,
기존에는 proxy server (HTTP Tunnel, Sconnect 등의 프로그램을 포함해서) 를 이용하는 방법을
사용했습니다.
가정에 proxy server 를 구축해둘 여유도 없고, 기타 위의 프로그램들도 유료이다 보니
(무료로 사용할 때에 Http Tunnel 은 속도가 조금 느릴 수 있는 제약이 있고, Sconnect 는 1일 1시간으로 제한)

아무튼 우연히 사무실에서 무선 네트웍이 (공개된ap) 잡히는 걸 알게 되었고
동시 사용을 시도해 보았으나, 실패.

결국, 내부망 로컬연결 - 사용한함 시켜놓고 무선랜쓰다가 다시 내부망 켜서 작업하고···.
이렇게 수동 ON/OFF 번갈아 가면서 필요할 때에만 무선으로 연결해서 쓰고 했는데 그리 효율적이지도
못하고 해서···.

유선·무선 둘 다 켜놓고 특정 IP 만 무선으로 이용하는 방법을 써서 사용하고 있습니다.

네이버와 구글을 포함해서 각종 검색사이트에 이리저리 검색해봤지만, 제가 원하는 답은
찾을 수 없더군요. 다만 비슷한 답들을 힌트로 -_-;

원리는, 라우팅 테이블을 건드려서 해당 IP 의 게이트웨이를 바꿔주는 방식인데,
말은 좀 어려운 것 같은데 해보면 간단합니다.


2. 의도

내부망으로는 업무/서버접속등을 위해 사용하고, 무선랜으로는 메신저 및 특정 사이트를
이용합니다.


3. 필요한 것

한대의 PC 와 두 개 이상의 네트워크.
- 이 글에서는 특정 사이트가 차단되어 있는 내부망 랜과 그외 무선 외부망을 기준으로 설명하고 있음.


4. 방법

    1) 2 개의 네트워크를 연결해 둡니다.

    2) 콘솔창을 띄우고, route print 명령으로 해당 Gateway 의 Metric 을 확인해 둠
      여기서 해당 Gateway 란 특정 사이트를 이용할 네트웍의 Gateway 를 말합니다.
       제 경우는, 내부망에서는 특정 차단된 사이트를 이용할 무선랜의 Gateway 가 해당됨.

            C:\ 콘솔> route print


    3) route add 명령을 이용해서 접속할 사이트를, 해당 Gateway 로 지정하는 명령을 실행해 줍니다.

            C:\ 콘솔> route add 명령 [접속할 사이트의 IP] [사용할 Gateway] [해당 metric]

   
    ※ route 명령만으로 실행하면 각종 도움말을 얻을 수 있음.

     4) route print 명령 또는 netstat -nr 명령으로 확인합니다.

    끝입니다.

이렇게 하면 route add 명령으로, 무선랜의 게이트웨이는 특정의 IP 만을 이용하게 되는 거죠.

하나의 예를 들어 보면, 내부망이 아닌 무선랜으로 네이트온을 접속할 경우에는

C:\ 콘솔> route add 203.226.253.91 192.168.1.1 METRIC 25
C:\ 콘솔> route add 203.226.253.73 192.168.1.1 METRIC 25


명령으로 가능하게 됩니다. (앞의 주소는 네이트온, 뒤에는 무선 게이트웨이)

참조 ) 네이트온 접속 주소

MSN 메신저의 경우는 이용 포트번호 말고도, 유동적으로 터널링되는 주소가 바뀌기 때문에
특정하기가 좀 어려워서 접속시마다 추가해 줬더니 약 20개 정도의 주소나 이용되어지더군요. -_-;

아참, 덤으로 이용되어지는 IP 주소를 알기 위해서는 netstat -na 명령으로 검색하면 됩니다.

================================================================================

위에 언급된 바와 같이 네트워크상의 특정 프로그램이 사용하고 있는 IP, port등을 알기 위해서는 netstat -an 명령을 이용하면 된다.


command 창에서 명령 수행 후

 TCP    172.21.29.246:1807     192.168.13.30:443      ESTABLISHED

요런 형태의 'ESTABLISHED' 상태의 연결들이 그것들이다.


출처: http://kongmks.cafe24.com/255?TSSESSION=67b637ce36321a49433071bc2dd63289

Windows에서 default gateway 값 변경.

Computer/ETC 2009. 3. 27. 00:39
Windows에는 Linux와 달리 [route add default gateway ...] 가 없다.
Gateway가 여러개인 경우, default를 변경하기 위해서 다음과 같이 수행한다.


  • route add 0.0.0.0 mask 0.0.0.0 <default gateway ip address> metric <현재 default gateway보다 작은 값>
  • route add default ... 가 없으므로
  • metric 값을 이용해 routing cost 값을 명시적으로 변경해줘야 한다.
  • 보통 1이 할당되므로 default로 될 놈에 1을 주고 아닌 놈에 5 정도 주면 된다.


출처: http://hohojj.egloos.com/

ARP (Address Resolution Protocol )

Computer/ETC 2007. 3. 14. 11:10


1. ARP 는 Address Resolution Protocol 이라고 합니다.

ARP는 라우터 뿐만 아니라 호스트에서도 사용됩니다. 인터넷에서 모든 노드(라우터,호스트)들은 각각 인터넷주소(IP주소)를 가지고 있습니다. 그래서 인터넷 여기저기로 패킷이 오갈 수 있는 것이지요. 그런데, 노드는 이 인터넷 주소 말고, 지역적으로 사용할 수 있는 Link Layer Address(L2)를 가지고 있습니다. 보통, 이것은 Physical adddess, MAC주소, Ethernet 주소와 동일하게 됩니다. 기본적으로 패킷전달은 이 L2주소로 지역내에서 전달됩니다. 같은 네트워크 내에서 호스트와 호스트, 호스트와 라우터 간에는 L2주소를 가지고 패킷이 전달됩니다.

그럼.. 다시 처음으로 돌아와서 패킷을 전송하는 절차의 예에 대해 설명하겠습니다.
0. 호스트 A에서 호스트 B로 IP 패킷을 보내려 합니다.
1. 현재 호스트A는 호스트B의 IP주소는 알고 있습니다, 그러나 L2주소(이더넷주소)는 모르고 있습니다.
2. 호스트 A는 호스트B의 L2주소를 알기 위해서 ARP Request 패킷을 뿌립니다. 뿌려진 ARP Request는 같은 네트워크 내의 모든 노드에게 전달됩니다.
3. 호스트 C는 ARP Request 를 받았지만, 자기 IP주소를 이야기하고 있지 않으므로 그냥 무시합니다.
4. 호스트 B는 ARP Request를 받아보니, "호스트A라는 놈이 자기(호스트B)의 IP주소를 가지고 L2주소(MAC주소,Ethernet주소)를 알고 싶어하는 구나"라는 것을 인지하고, 호스트A에게 자기의 L2 주소를 ARP Response를 주어 응답해줍니다.
5. 호스트 A는 호스트 B로부터 온 ARP Response 를 받고, "오호, 호스트B의 L2주소가 xx:xx:xx:xx:xx:xx 로구나"하고 알게 됩니다.
6. 이제 호스트 A는 호스트 B로 L2주소를 써서 직접 IP패킷을 전송합니다.
7. 몇 초뒤 호스트 A는 호스트 B에게 IP패킷을 보내려 합니다. 호스트 A에게는 ARP캐쉬가 있어서 최근에 사용한 ARP Table을 가지고 있습니다. 그래서 앞의 1~5단계를 생략하고 바로 호스트 B의 L2주소를 이용하여 IP패킷을 직접 전송합니다.
8. 호스트 A의 ARP Cache (ARP Table)은 한참 사용하지 않으면 없어집니다.

일반적으로 TCP/IP패킷은 다음과 같이 생겼습니다.
[MAC 헤더] + [IP 헤더] + [TCP헤더] + [TCP 데이터그램]

PC에서 arp -a 명령을 내리면 ARP cache가 출력되는 것입니다. Dynamic 이라고 한 것은 자동으로 ARP패킷을 전송해서 얻은 것으로, 한참 사용하지 않을 경우 없어집니다. arp -s 명령을 써서 강제로 해당 IP의 L2주소를 세팅할 수 있는데 이때는 static 으로 표시되고, 직접 지우기 전에는 안 없어집니다. arp -d 를 하면 ARP cache를 모두 지울수 있습니다.


2. 이더넷 랜카드를 장착한 어떤 장비도 ARP테이블 사용합니다.

사용하는 목적은 속도때문입니다. 일종의 캐쉬정보죠

모든 로칼에서의 통신은 아이피가 아닌 mac주소를 참조해서 이루어집니다.

아이피는 단지 mac을 알기위한 도구일 뿐이죠.

한번 알아낸 mac은 arp테이블에 아이피 매핑되서 저장되며, 다음 통신에는 arp lookup을 하지 않고

바로 arp테이블을 참조하여 통신을 하게 됩니다.

당연히 aging time이 있어서 일정시간이 지나면 사라지겠죠.

그리고 로칼네트웍이 아닌 원격지(예:인터넷)와 통신을 할 경우에는

컴퓨터는 항상 게이트웨이 장비(예:라우터)로 해당 패킷을 보내게 됩니다.

ADSL이나 케이블도 ISP에 게이트웨이 장비가 존재하겠죠.

따라서 컴퓨터는 게이트웨이의 MAC주소만 알고 있으면 됩니다.

컴퓨터에서 arp -a 를 쳤을 때 나오는 MAC주소는 ISP의 게이트웨이 장비 주소이며,

다이나믹으로 뜨는 건 arp lookup을 통해서 자동으로 배워왔다는 의미입니다.

이런 경우는 거의 없지만, static으로도 줄 수 있는데, 이러면 static으로 표시가 됩니다.


참고로

라우터는 라우팅 테이블을 보고 해당 인터페이스로 패킷을 내보내고,

스위치는 맥어드레스 테이블(arp테이블과 다름)을 보고 해당 포트로 프레임을 내보냅니다.

라우터나 스위치에 있는 arp 테이블은 컴퓨터에 있는 것과 동일한 역할을 합니다.

도움이 되었기를 바라면서...


Ref. http://kud1981.egloos.com/3100261

'Computer > ETC' 카테고리의 다른 글

WCDMA 인터넷 하기  (2) 2007.04.19
Microsoft Word 단축키  (1) 2007.03.31
원격 데스크탑에서 MATLAB 사용하기  (3) 2007.02.27
+ 익스플로러 새창이 안뜰때의 대처법  (2) 2005.10.10
윈도우 XP 팁들.  (1) 2005.07.06

Linux Network Emulator

Computer/Linux Tips 2007. 3. 6. 20:40

Netem이라는 linux kernel level packet emulator에 관한 것.

packet drop, delay, ... 등등을 간단하게 emulation 할 수 있다.

Kernel 2.6부터 사용가능

참고 사이트 : http://linux-net.osdl.org/index.php/Netem

 - TC 매뉴얼