강좌 & 팁
글 수 2,412
2014.07.14 17:16:17 (*.134.169.166)
39607
네트워크와 관련된 처리를 하다 보면 넷마스크나 게이트웨이 같은 정보가 필요합니다.
물론 이런 정보를 얻기 위해서 다양한 방법을 구사하죠..
아무래도 시스템 API 및 proc 이나 sysfs 또는 ifconfig , route 등과 기존 프로그램을
활용하는 방법도 있습니다.
만약 리눅스 나 유닉스 쪽이라면 이런 프로그램을 혼자 개발해서 끙끙 거리기 보다는
남들이 만들어 놓은 거 사용하는 것이 편하겠죠?
오늘은 netroute 라는 것을 소개해 볼까 합니다.
이 netroute 모듈의 홈페이지는 다음에 소개 되고 있습니다.
https://github.com/indutny/node-netroute
설치는 다음과 같이 한줄이면 됩니다.
npm install netroute
이 모듈의 내부를 들여다 보면 cpp 로 된 것이 있습니다.
그래서 완전 자바스크립트만으로 된 것이 아니기 때문에 빌드 과정이 포함되는 점에
주의 하셔야 합니다.
사용법은 어렵지 않습니다.
이 모듈은 딱! 두개의 api 만을 제공하기 때문입니다.
getGateway() : 게이트웨이정보를 얻어 옵니다.
인자로 네트워크인터페이스 장치명을 주면
해당 장치의 디폴트 게이트웨이 정보를 얻을수 있습니다.
getInfo() : 라우트 정보를 얻어 옵니다.
자세한 설명은 소스를 실행한 결과를 보면서 하겠습니다.
먼저 사용 예제 소스를 봅시다.
[C019_get_route_info.js]------------------------------------------------------
var 네트워크_라우터 = require('netroute');
var 게이트웨이 = 네트워크_라우터.getGateway();
var 라우트_정보들 = 네트워크_라우터.getInfo();
console.log( 게이트웨이 );
console.log( 라우트_정보들 );
-----------------------------------------------------------------------------------
진짜 간단하죠?
실행 결과는 다음과 같습니다.
길어서 중간 생략 했습니다.
$ node get_route_info.js
192.168.10.1
{ IPv4:
[ { interface: 'eth0',
destination: '0.0.0.0',
gateway: '192.168.10.1',
flags: 3,
refcnt: 0,
use: 0,
metric: 0,
netmask: '0.0.0.0',
mtu: 0,
window: 0,
rtt: 0 },
:
:
rtt: 0 } ],
IPv6:
[ { destination: '2001:db8:1::/64',
source: '::/0',
gateway: '::',
metric: 256,
refcnt: 0,
use: 0,
flags: 4980737,
interface: 'eth0' },
:
:
{ destination: '::/0',
source: '::/0',
gateway: '::',
metric: -1,
refcnt: 1,
use: 11221,
flags: 2097664,
interface: 'lo' } ] }
게이트 웨이 정보는 간단한데..
라우트 정보는 조금 복잡합니다.
하지만 결국 잘 뜯어 보면...
IPv4 와 IPv6 로 나누어지고
그 안에 각 인터페이스에 할당된 라우팅 정보 배열임을 알수 있습니다.
우린 IPv4 에 주로 관심이 있으니 관심있는 속성을 보죠..
interface : 장치명입니다.
destination : 장치에 적용되는 라우팅 대상 IP 입니다.
gateway : 디폴트 게이트 웨이 주소 입니다.
netmask : 이 라우팅 주소에 대한 넷 마스크 입니다.
역쉬 남들이 작성한거 잘 사용하는 것이 최고죠?
항상 감사 합시다..