RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

RouterOS(Mikrotik)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์žฅ์น˜๋ฅผ ์›๊ฒฉ์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ์œ„ํ—˜์— ๋น ๋œจ๋ฆฝ๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ Winbox ํ”„๋กœํ† ์ฝœ์˜ DNS ์บ์‹œ ์ค‘๋…๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์˜ค๋ž˜๋˜์—ˆ๊ฑฐ๋‚˜(๊ธฐ๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •์œผ๋กœ) ์ˆ˜์ •๋œ ํŽŒ์›จ์–ด๋ฅผ ์žฅ์น˜์— ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ทจ์•ฝ์  ์„ธ๋ถ€์ •๋ณด

RouterOS ํ„ฐ๋ฏธ๋„์€ DNS ์กฐํšŒ๋ฅผ ์œ„ํ•œ ํ™•์ธ ๋ช…๋ น์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์š”์ฒญ์€ ํ•ด์„๊ธฐ๋ผ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. Resolver๋Š” RouterOS์˜ Winbox ํ”„๋กœํ† ์ฝœ์— ์—ฐ๊ฒฐ๋˜๋Š” ๋งŽ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋†’์€ ์ˆ˜์ค€์—์„œ Winbox ํฌํŠธ๋กœ ์ „์†ก๋œ "๋ฉ”์‹œ์ง€"๋Š” ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ๋ฒˆํ˜ธ ์ง€์ • ์ฒด๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ RouterOS์˜ ๋‹ค์–‘ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๋ผ์šฐํŒ…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ RouterOS์—๋Š” DNS ์„œ๋ฒ„ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์—๋„ ๋ผ์šฐํ„ฐ๋Š” ์ž์ฒด DNS ์บ์‹œ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

example.com๊ณผ ๊ฐ™์ด winbox_dns_request๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญํ•˜๋ฉด ๋ผ์šฐํ„ฐ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ์ด ํ†ต๊ณผํ•ด์•ผ ํ•˜๋Š” DNS ์„œ๋ฒ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ž˜๋ชป๋œ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์—์„œ DNS ์„œ๋ฒ„ ๊ตฌํ˜„์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋ฆฝ ํด๋ผ์šฐ์Šคํ•ญ์ƒ IP ์ฃผ์†Œ 192.168.88.250์„ ํฌํ•จํ•˜๋Š” A ๋ ˆ์ฝ”๋“œ๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

์ด์ œ Winbox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ example.com์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋ผ์šฐํ„ฐ์˜ DNS ์บ์‹œ๊ฐ€ ๊ฐ์—ผ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  example.com์„ ์ค‘๋…์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ผ์šฐํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋กœ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ผ์šฐํ„ฐ๋Š” Upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com ๋ฐ download.mikrotik.com์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ์‹ค์ˆ˜ ๋•๋ถ„์— ํ•œ๊บผ๋ฒˆ์— ๋…์‚ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("download.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

๋ผ์šฐํ„ฐ๋Š” ํ•˜๋‚˜์˜ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” 5๊ฐœ๋ฅผ ๋‹ค์‹œ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ์‘๋‹ต์„ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์บ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

RouterOS์˜ ๋ฐฑํฌํŠธ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ์ˆ˜์‹ญ๋งŒ ๋Œ€์˜ ์žฅ์น˜๊ฐ€ ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด ๊ณต๊ฒฉ์€ ๋ผ์šฐํ„ฐ์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณต๊ฒฉ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ๋ผ์šฐํ„ฐ๊ฐ€ DNS ์„œ๋ฒ„ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ๊ณต๊ฒฉ์„ ํ†ตํ•ด RouterOS ๋ฒ„์ „์„ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ๋ฐฑํฌํŠธํ•˜๋Š” ๋“ฑ ๋” ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์ ์„ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—…๋ฐ์ดํŠธ ์„œ๋ฒ„์˜ ๋กœ์ง์„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๊ณ  RouterOS๊ฐ€ ์˜ค๋ž˜๋œ(์ทจ์•ฝํ•œ) ๋ฒ„์ „์„ ํ˜„์žฌ ๋ฒ„์ „์œผ๋กœ ์ธ์‹ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์œ„ํ—˜์€ ๋ฒ„์ „์ด "์—…๋ฐ์ดํŠธ"๋˜๋ฉด ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋œ๋‹ค๋Š” ์‚ฌ์‹ค์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ๋นˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ณต๊ฒฉ์€ ๊ฝค ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ์ €์ž ๋‹ค์Œ๊ณผ ๊ด€๋ จ๋œ ๋ฒกํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋ฒกํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํŽŒ์›จ์–ด์— ๋ฐฑ๋„์–ด ๋‚ด์žฅ, ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์ด๋ฏธ ์ค‘๋ณต๋œ ๊ธฐ์ˆ ์ด๋ฉฐ ๋ถˆ๋ฒ•์ ์ธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ณดํ˜ธ

Winbox๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Winbox๋ฅผ ํ†ตํ•œ ๊ด€๋ฆฌ์˜ ํŽธ๋ฆฌ์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  SSH ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€