рдореБрдЭреЗ "рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдЬрдВрдХреНрд╢рди рдкрд░" рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ, рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдЙрджреНрджреЗрд╢реНрдп:
- рдЬреАрдУрдбреАрдПрдирдПрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ *
- рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде (* .some.tstред 1.2.3.4)
- рдЬрд╛рдиреЗ рдкрд░ рдЬрд╝реЛрди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдмреИрдЪреЛрдВ рдореЗрдВ рдирдП рдЬрд╝реЛрди рдЬреЛрдбрд╝реЗрдВ
- рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз "рдХреИрд╢ рдкрд┐рдЫрд▓реЗ" рдХреЗ рд▓рд┐рдП рднрд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛
- рдЗрд╕ рд░рд┐рдПрдХреНрдЯрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реЗ, рдкреНрд░реЙрдХреНрд╕реА / рд╡реАрдбреАрдПрд╕ рд╣реАрдк рдирд╣реАрдВ)
*) geoDNS рджреНрд╡рд╛рд░рд╛, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ / рдП-рд░рд┐рдХреЙрд░реНрдб рдкрддреЗ (рдпреВрдПрд╕рдП рдХреЗ рд▓рд┐рдП, рдпреВрдПрд╕рдП рдореЗрдВ рдЖрдИрдкреА рд╕рд░реНрд╡рд░ рджрд┐рдП рдЧрдП рд╣реИрдВ, рд╕реАрдЖрдИрдПрд╕ рдХреЗ рд▓рд┐рдП - рдорд╛рд╕реНрдХреЛ рдореЗрдВ, рдпреВрд░реЛрдкреАрдп рд╕рдВрдШ рдХреЗ рд▓рд┐рдП - рдпреВрд░реЛрдк рдореЗрдВ ...)
рд▓реЗрдЦ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ
- geoDNS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐
- рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐
- "рд╢реБрджреНрдз рдирдЧрдиреЗрдХреНрд╕" рдкрд░ рд╡реИрдЪрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди
рдЕрдЧрд░ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддреЛ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рдмрд┐рд▓реНрд▓реА рд╕реЗ рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред
рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди (
рдкрд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдб ,
рдЬрд┐рдпреЛ_рдмреИрдХреЗрдВрдб рдФрд░
рдкрд╛рдЗрдк_рдмреИрдХреЗрдВрдб рдХреЗ рд▓рд┐рдП рдкреИрдЪ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
GeoDNS рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐
Powerdns (pdns) рдПрдХ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ рдмрдВрдб-рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди DBMS (MySQL, Oracle, PostgreSQL, sqhite) рд╕реЗ рдмреИрдХреЗрдВрдб (рд╕реВрдЪрдирд╛ рд╕реНрд░реЛрдд) рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ (
15 рдЯреБрдХрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ) рд╣реИ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рдЗрдк, рдФрд░ Lua, LDAP рдЬреИрд╕реЗ рдПрдХреНрд╕реЛрдЯрд┐рдХреНрд╕ред
рдкреВрд░реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ (5 рдбреЛрдореЗрди mysql рдкрд░, 5 рдЕрдзрд┐рдХ sqlite, рдЖрджрд┐ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ) рдЗрд╕ рддрд░рд╣ рд╕реЗ:
launch=remote remote-connection-string=http:url=http://127.0.0.1:4343/dnsapi
рджреВрд░рд╕реНрде рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, pdns рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ http рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд╕рдВрджреАрджрд╛ json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рд╕реЗ http рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ:
> GET /dnsapi/lookup/www.example.com/ANY HTTP/1.1 < {"result":[{"qtype":"A", "qname":"www.example.com", "content":"192.168.1.2", "ttl": 60}]}
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдпрд╣ рдмрд╣реБрдд рдмреЛрд▓реНрдб рд╣реЛрдЧрд╛, рдФрд░ рдбреАрдПрдирдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ddos тАЛтАЛрдХрд╛рдлреА рдЖрдо рд╣реИ) рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╢реБрджреНрдз рдирдЧрдиреЗрдХреНрд╕ рдкрд░ рдбреАрдПрдирдПрд╕ рд▓реЙрдЬрд┐рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдЯреЗрдЯрд┐рдХ рджреЗрддрд╛ рд╣реИред
рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рддрд░реНрдХ рдмрд╣реБрдд рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ рдФрд░ try_files рдФрд░ rewrite рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреБрдЫ рднреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдереА, рдХреЗрд╡рд▓ gex рдШрдЯрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
ngx_http_geo_module рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ рдерд╛
рдпрд╣ рдЗрд╕ рдмрд╣реБрдд рд╣реА рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХрд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рдЬрдирд░реЗрдЯрд░ рдерд╛ред
рд╣рдо рдлреЙрд░реНрдо рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЬрд╝реЛрди (рд░реЗрдбреА-рдореЗрдб рдЬреЛрдВрд╕ рдЬрд╡рд╛рдм, рднреВ-рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗ
/$1/$2$1_$3.jsn
$1
- рдЬрд╝реЛрди
$2
- рдЙрдкрдбреЛрдореЗрди (рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)
$3
- рдЕрдиреБрд░реЛрдз рдкреНрд░рдХрд╛рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдП, CNAME, MX ... рдХреЛрдИ рднреА)
рдЙрджрд╛рд╣рд░рдг: /domain.com/sub.domain.com_A.jsn
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рддрд╛рд░реНрдХрд┐рдХ рдбреЛрдореЗрди рдирд╛рдо nextsub.sub.domain.com рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
- рд╕реНрд╡-рдбреЛрдореЗрди /nextsub.sub.domain.com/nextsub.sub.domain.com_A.jsn
- subdomain /sub.domain.com/nextsub.sub.domain.com_A.jsn
- Wildcard /sub.domain.com/_sub.domain.com_A.jsn
рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЫрд╛рдБрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (try_files рдореЗрдВ рдбрд╛рд▓реЗрдВ)ред
рдпрджрд┐ рд╣рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдЙрдкрдбреЛрдореЗрди рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдКрдкрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ RFC рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рд╕рдВрджрд┐рдЧреНрдз рд╣реИ): рд╣рдо рдмрд╕ sub.domain.com рдХреА рдЦреЛрдЬ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ (рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ)
рдпрд╣ рднреВ-рдШрдЯрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдЬрд┐рдпреЛрдлреЗрдВрд╕ рдХрд╛ рдЕрдХреНрд╖рд░ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ: /domain.com/
def /sub.domain.com_A.jsn
рд╢реБрджреНрдз рдирдЧрдиреЗрдХреНрд╕ рдкрд░ рд╕реНрдХреЗрдЪ рдХрд╛ рдШреЛрд▓
рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдХреНрд░рдЪ: рдпрд╣ рд╕рдордЭрдирд╛ рдЬрд░реВрд░реА рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЕрдиреБрд░реЛрдз ddddd.domain.com рднреЗрдЬрддреЗ рд╕рдордп, рд╣рдореЗрдВ рд╕рдмрдбреЛрдореЗрди (рдФрд░ *
.domain.com ) рдХреЛ рд╡рд╛рдкрд╕ рджреЗрдирд╛ рд╣реЛрдЧрд╛,
ngx_http_subbmodule рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдЙрдкрдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рд╕реНрдЯреЗрдЯрд┐рдХ рдореЗрдВ% WC% рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИред
Nginx рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐
рдпрд╣ рдЕрднреА рднреА рдпрд╣рд╛рдВ рд╕рд░рд▓ рд╣реИ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ 127.0.0.0/8 рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рднреВрдЧреЛрд▓ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рд╣реИрдВ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдЖрдИрдкреА рд╕реНрд░реЛрдд рдХреЛ рдЦреЛрдж рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рдорд┐рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
wget -q -S -O - --bind-address=127.1.0.2 http://127.0.0.1:4343/dnsapi/lookup/dqqq/A dig -b 127.0.12.1 ANY q.qq @localhost
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
# dig +short -b 127.0.0.1 A q.qq @localhost 1.1.1.1 # dig +short -b 127.1.0.1 A q.qq @localhost 127.0.0.1 # dig +short -b 127.1.1.1 A q.qq @localhost 127.1.99.123
рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рдЬрдирд░реЗрдЯрд░
рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреЛрдб рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╢рд░реНрдо рдЖ рд░рд╣реА рд╣реИред рдпрд╣рд╛рдБ рд╡рд╣ рд╣реИ
рд╕реНрдереИрддрд┐рдХ рдЬрдирд░реЗрдЯрд░ <?php $empty=array(); define('TTL',3); opt('empty',true,'empty'); opt('index','true','index'); opt('backend',false,'backend'); $zones=array();
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд╛рдн:
- "рд╣реЙрдЯ" рдЬреЛрдбрд╝реЗрдВ / рдмрджрд▓реЗрдВ
- рдирдЧреАрдирдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдереИрддрд┐рдХ рд░рд┐рдЯрд░реНрди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
- nginx_geo рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдзреНрдпрдпрди рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред
- рдкрд╣рд▓реЗ рдирдП pdns рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ pdns + nginx рдмрдВрдбрд▓ рд╕рд░реНрд╡рд░
- рдпрд╣ рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП nginx config рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдпреБрджреНрдз рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рдорд╛рдирддрд╛, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ:
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА, рдФрд░ рдЯрд╛рдЗрдкреЛ рдХреЗ рдкреНрд░рд╢реНрди рдкреАрдПрдо рдХреЛ рднреЗрдЬреЗрдВред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреА DNS рд╕реЗрд╡рд╛ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛
рдЕрдкрдиреЗ рдпрд╛рд░реНрдб рдкрд░ рдЬрд╛рдПрдБ , рдХреНрд╖рдорд╛ рдХрд░реЗрдВред