네트워크와 관련된 처리를 하다 보면 넷마스크나 게이트웨이 같은 정보가 필요합니다.

물론 이런 정보를 얻기 위해서 다양한 방법을 구사하죠..

아무래도 시스템 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 : 이 라우팅 주소에 대한 넷 마스크 입니다. 

역쉬 남들이 작성한거 잘 사용하는 것이 최고죠?

항상 감사 합시다..