이번 아티클에서는 dns 모듈에 대해서 살펴보겠습니다. 말 그대로 DNS를 다루는 경우에 사용하는데요, 주로 도메인 정보를 이용해 IP 혹은 DNS 정보를 얻고자 할 때 사용합니다. 아래 예제에서는 async/await가 다시 등장하니, 해당 개념도 참고 삼아 리뷰하고 오시기 바랍니다.
import dns from 'dns/promises';
const ip = await dns.lookup('tistory.com');
console.log('IP', ip);
const a = await dns.resolve('tistory.com', 'A');
console.log('A', a);
const mx = await dns.resolve('tistory.com', 'MX');
console.log('MX', mx);
const cname = await dns.resolve('wwww.tistory.com', 'CNAME');
console.log('CNAME', cname);
const any = await dns.resolve('tistory.com', 'ANY');
console.log('ANY', any);
/* 출력
IP { address: '121.53.105.234', family: 4 }
A [ '211.249.221.185', '121.53.105.234' ]
MX [
{ exchange: 'aspmx.daum.net', priority: 10 },
{ exchange: 'alt.aspmx.daum.net', priority: 20 }
]
PS D:\XXX\Javascript> node example.mjs
IP { address: '121.53.105.234', family: 4 }
A [ '211.249.221.185', '121.53.105.234' ]
MX [
{ exchange: 'aspmx.daum.net', priority: 10 },
{ exchange: 'alt.aspmx.daum.net', priority: 20 }
]
CNAME [ 'wildcard-tistory-fz0x1pwf.kgslb.com' ]
PS D:\XXX\Javascript> node example.mjs
IP { address: '121.53.105.234', family: 4 }
A [ '121.53.105.234', '211.249.221.185' ]
MX [
{ exchange: 'aspmx.daum.net', priority: 10 },
{ exchange: 'alt.aspmx.daum.net', priority: 20 }
]
CNAME [ 'wildcard-tistory-fz0x1pwf.kgslb.com' ]
ANY [
{ address: '211.249.221.185', ttl: 600, type: 'A' },
{ address: '121.53.105.234', ttl: 600, type: 'A' },
{ exchange: 'alt.aspmx.daum.net', priority: 20, type: 'MX' },
{ exchange: 'aspmx.daum.net', priority: 10, type: 'MX' },
{ value: 'ns2.daum.net', type: 'NS' },
{ value: 'ns1.daum.net', type: 'NS' },
{ entries: [ 'v=spf1 include:_spf.daum.net ~all' ], type: 'TXT' },
{
entries: [
'google-site-verification=qNAtkd6vDGFuD_z9X42LfkhSbHBZqnUZOTfnFn1jUNc'
],
type: 'TXT'
},
{
entries: [
'google-site-verification=m453ZX5HCNg7vFtbRv_mAt5GxIJsj4VJw_LFvFKkifI'
],
type: 'TXT'
},
{
entries: [
'google-site-verification=Djy29naX64H0z8fGEOEOd-k40Sp65VRnz1sm_thWPhw'
],
type: 'TXT'
},
{
nsname: 'ns.kakaocorp.com',
hostmaster: 'root.kakaocorp.com',
serial: 1668574737,
refresh: 1800,
retry: 600,
expire: 2419200,
minttl: 300,
type: 'SOA'
}
]
*/
ip주소는 기본적으로 dns.look이나 dns.resolve(도메인)으로 얻을 수 있습니다. A(ipv4 주소), AAAA(ipv6 주소), NS(네임 서버), SOA(도메인 정보), CNAME(별칭, 주로 www가 붙은 주소는 별칭일 경우가 많음), MX(메일서버) 등은 레코드라고 부르는데 해당 레코드에 대한 정보는 dns.resolve(도메인, 레코드 이름)으로 조회합니다.
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 단방향 암호화 2 (0) | 2024.04.23 |
---|---|
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 단방향 암호화 1 (0) | 2024.04.22 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 5 [url 2/2] (0) | 2024.04.18 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 5 [url 1/2] (0) | 2024.04.17 |
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 4 (0) | 2024.04.16 |