ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืจื™ืžืึธื•ื˜ืœื™ ื“ืึทื•ื ื’ืจื™ื™ื“ ื“ืขื•ื•ื™ืกืขืก ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ RouterOS (Mikrotik) ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื ืขืฅ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ. ื“ื™ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ื– ืคืืจื‘ื•ื ื“ืŸ ืžื™ื˜ ืคืึทืจืกืึทืžื•ื ื’ ืคื•ืŸ ื“ื™ ื“ื ืก ืงืึทืฉ ืคื•ืŸ ื“ื™ Winbox ืคึผืจืึธื˜ืึธืงืึธืœ ืื•ืŸ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœืึธื“ืŸ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ (ืžื™ื˜ ืึท ืคืขืœื™ืงื™ื™ึทื˜ ืคึผืึทืจืึธืœ ื‘ืึทืฉื˜ืขื˜ื™ืง) ืึธื“ืขืจ ืžืึทื“ืึทืคื™ื™ื“ ืคื™ืจืžื•ื•ืึทืจืข ืื•ื™ืฃ ื“ื™ ืžื™ื˜ืœ.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืคืจื˜ื™ื

ื“ื™ ืจืึธื•ื˜ืขืจืึธืก ื•ื•ืึธืงื–ืึทืœ ืฉื˜ื™ืฆื˜ ื“ื™ ืจืขื–ืึทืœื•ืฉืึทืŸ ื‘ืึทืคึฟืขืœ ืคึฟืึทืจ ื“ื ืก ืœื•ืงืึทืคึผ.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื“ืขื ื‘ืขื˜ืŸ ืื™ื– ื›ืึทื ื“ืึทืœื“ ื“ื•ืจืš ืึท ื‘ื™ื™ื ืขืจื™ ื’ืขืจื•ืคึฟืŸ ืจืขืกืึธืœื•ื•ืขืจ. ืจืขืกืึธืœื•ื•ืขืจ ืื™ื– ืื™ื™ื ืขืจ ืคื•ืŸ ืคื™ืœืข ื‘ื™ื ืึทืจื™ืขืก ื•ื•ืึธืก ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ Winbox ืคึผืจืึธื˜ืึธืงืึธืœ ืคื•ืŸ RouterOS. ืื•ื™ืฃ ืึท ื”ื•ื™ืš ืžื“ืจื’ื”, "ืžืขืกื™ื ื“ื–ืฉื™ื–" ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ื•ื•ื™ื ื‘ืึธืงืก ืคึผืึธืจื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืจืึทื•ื˜ื™ื“ ืฆื• ืคืึทืจืฉื™ื“ืŸ ื‘ื™ื ืึทืจื™ืขืก ืื™ืŸ RouterOS ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ืžืขื ื’ืข-ื‘ืื–ื™ืจื˜ ื ืึทืžื‘ืขืจื™ื ื’ ืกื›ืขืžืข.

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, RouterOS ื”ืื˜ ื“ื™ DNS ืกืขืจื•ื•ืขืจ ืฉื˜ืจื™ืš ืคืึทืจืงืจื™ืคึผืœื˜.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ืึธื‘ืขืจ, ืืคื™ืœื• ื•ื•ืขืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ืคึฟื•ื ืงืฆื™ืข ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜, ื“ืขืจ ืจืึทื•ื˜ืขืจ ื”ืืœื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื“ื ืก ืงืึทืฉ.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื•ื•ืขืŸ ืžื™ืจ ืžืึทื›ืŸ ืึท ื‘ืงืฉื” ื ื™ืฆืŸ winbox_dns_request ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ.com, ื“ืขืจ ืจืึทื•ื˜ืขืจ ื•ื•ืขื˜ ืงืึทืฉ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื–ื™ื ื˜ ืžื™ืจ ืงืขื ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื“ื ืก ืกืขืจื•ื•ืขืจ ื“ื•ืจืš ื•ื•ืึธืก ื“ื™ ื‘ืขื˜ืŸ ื–ืึธืœ ื’ื™ื™ืŸ, ืึทืจื™ื™ึทืŸ ืคืึทืœืฉ ืึทื“ืจืขืกืขืก ืื™ื– ื ื™ืฉื˜ื™ืง. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ืงืขื ืขืŸ ืงืึทื ืคื™ื’ื™ืขืจ ืึท ื“ื ืก ืกืขืจื•ื•ืขืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืคื™ืœื™ืคื•ืก ืงืœืื•ืกืฆื• ืฉื˜ืขื ื“ื™ืง ืจื™ืกืคึผืึทื ื“ ืžื™ื˜ ืึท ื ืจืขืงืึธืจื“ ืžื™ื˜ ื“ื™ IP ืึทื“ืจืขืก 192.168.88.250.

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()

ืื™ืฆื˜ ืื•ื™ื‘ ืื™ืจ ื–ื•ื›ืŸ ืคึฟืึทืจ example.com ื ื™ืฆืŸ Winbox, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืึทื– ื“ื™ ื“ื ืก ืงืึทืฉ ืคื•ืŸ ื“ื™ ืจืึทื•ื˜ืขืจ ืื™ื– ืคึผื•ื™ื–ืึทื ื“.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ 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()

ื“ืขืจ ืจืึทื•ื˜ืขืจ ืจื™ืงื•ื•ืขืก ืื™ื™ืŸ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ, ืื•ืŸ ืžื™ืจ ื’ืขื‘ืŸ ืคื™ื ืฃ ืฆื•ืจื™ืง. ื“ืขืจ ืจืึทื•ื˜ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ืงืึทืฉ ืึทืœืข ื“ื™ ืจืขืกืคึผืึธื ืกืขืก ืจื™ื›ื˜ื™ืง.

ื‘ืึทืงืคึผืึธืจื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ ืื™ืŸ RouterOS ืฉื˜ืขืœืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ื“ืขื•ื•ื™ืกืขืก ืื™ืŸ ืจื™ื–ื™ืงื™ืจืŸ

ื“ืึธืš, ื“ืขื ื‘ืึทืคืึทืœืŸ ืื™ื– ืื•ื™ืš ื ื•ืฆื™ืง ืื•ื™ื‘ ื“ื™ ืจืึทื•ื˜ืขืจ ืึทืงื˜ื™ื ื’ ื•ื•ื™ ืึท ื“ื ืก ืกืขืจื•ื•ืขืจ, ื•ื•ื™ื™ึทืœ ืขืก ืึทืœืึทื•ื– ื“ื™ ืจืึทื•ื˜ืขืจ ืงืœื™ื™ืึทื ืฅ ืฆื• ื–ื™ื™ืŸ ืงืขื’ืŸ.

ื“ืขืจ ื‘ืึทืคืึทืœืŸ ืื•ื™ืš ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื’ื•ื•ื•ืจืข ืึท ืžืขืจ ืขืจื ืกื˜ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™: ื“ืึทื•ื ื’ืจื™ื™ื“ ืึธื“ืขืจ ื‘ืึทืงืคึผืึธืจื˜ ื“ื™ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹RouterOS. ื“ืขืจ ืึทื˜ืึทืงืขืจ ืจื™ืงืจื™ื™ื™ืฅ ื“ื™ ืœืึธื’ื™ืง ืคื•ืŸ ื“ื™ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืกืขืจื•ื•ืขืจ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื“ื™ ื˜ืฉืึทื ื’ืขืœืึธื’, ืื•ืŸ ืคืึธืจืกืขืก RouterOS ืฆื• ื–ืขืŸ ื“ื™ ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ (ืฉืคึผื™ืจืขื•ื•ื“ื™ืง) ื•ื•ืขืจืกื™ืข ื•ื•ื™ ืงืจืึทื ื˜. ื“ื™ ื’ืขืคืึทืจ ื“ืึธ ืœื™ื’ื˜ ืื™ืŸ ื“ืขื ืคืึทืงื˜ ืึทื– ื•ื•ืขืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ืื™ื– "ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜", ื“ื™ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืคึผืึทืจืึธืœ ืื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืง ืฆื• ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืขืจื˜ - ืึท ืึทื˜ืึทืงืขืจ ืงืขื ืขืŸ ืงืœืึธืฅ ืื™ืŸ ืฆื• ื“ื™ ืกื™ืกื˜ืขื ืžื™ื˜ ืึท ืœื™ื™ื“ื™ืง ืคึผืึทืจืึธืœ!


ื“ื™ ื‘ืึทืคืึทืœืŸ ืื™ื– ื’ืึทื ืฅ ืืจื‘ืขื˜ืŸ, ื˜ืจืึธืฅ ื“ืขืจ ืคืึทืงื˜ ืึทื– ืžืขื›ืึทื‘ืขืจ ื™ืžืคึผืœืึทืžืึทื ืฅ ืขื˜ืœืขื›ืข ืžืขืจ ื•ื•ืขืงื˜ืึธืจืก, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื“ื™ ืฉื™ื™ึทื›ื•ืช ืฆื• ืขืžื‘ืขื“ื™ื ื’ ืึท ื‘ืึทืงื“ืึธืจ ืื™ืŸ ื“ื™ ืคื™ืจืžื•ื•ืึทืจืข, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืฉื•ื™ืŸ ืึท ื™ื‘ืขืจื™ืง ื˜ืขื›ื ื™ืง ืื•ืŸ ื–ื™ื™ึทืŸ ื ื•ืฆืŸ ืคึฟืึทืจ ื™ืœื™ื“ื–ืฉื™ื˜ืึทืžืึทื˜ ืฆื•ื•ืขืงืŸ ืื™ื– ื•ืžืœืขื’ืึทืœ.

ืฉื•ืฅ

ืกื™ืžืคึผืœื™ ื“ื™ืกื™ื™ื‘ืึทืœื™ื ื’ ื•ื•ื™ื ื‘ืึธืงืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื‘ืึทืฉื™ืฆืŸ ื–ื™ืš ืคื•ืŸ ื“ื™ ืื ืคืืœืŸ. ื˜ืจืึธืฅ ื“ื™ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ืคื•ืŸ ืึทื“ืžื™ื ื™ืกื˜ืจืึทืฆื™ืข ื“ื•ืจืš ื•ื•ื™ื ื‘ืึธืงืก, ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ื ื•ืฆืŸ ื“ื™ SSH ืคึผืจืึธื˜ืึธืงืึธืœ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’