рдЕрдкрдирд╛ DNS-over-HTTPS рд╕рд░реНрд╡рд░ рдЙрдард╛рдПрдБ

DNS рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рдХреЛ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдЧ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрдИ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдореБрдЦреНрдп рдЬреЛрд░ рд╣рдореЗрд╢рд╛ рдкреВрд░реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реЗрд╡рд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рд░рд╣рд╛ рд╣реИред


DOH


рд╣рд╛рд▓ рддрдХ рддрдХ, DNS рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рднреЗрджреНрдпрддрд╛ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рд╣реИ, рдкреНрд░рджрд╛рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдордЧреНрд░реА, рд░рд╛рдЬреНрдп рдХрд╛рдиреВрди рдкреНрд░рд╡рд░реНрддрди рдПрдЬреЗрдВрд╕рд┐рдпреЛрдВ рдФрд░ рд╕реЗрдВрд╕рд░рд╢рд┐рдк рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдПрдореНрдмреЗрдб рдХрд░рдХреЗ рдЕрдкрдиреА рдЖрдп рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреАрдПрдирдПрд╕рдПрд╕рдИрд╕реА / рдбреАрдПрдПрдирдИ, рдбреАрдПрдирдПрд╕ рдХреНрд░рд┐рдкреНрдЯ, рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдЯреАрдПрд▓рдПрд╕ рдФрд░ рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдЬреИрд╕реА рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХреА рдореМрдЬреВрджрдЧреА рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрдкрд░рд╛рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рдЦрддреНрдо рд╣реЛ рдЧрдИред рдФрд░ рдЕрдЧрд░ рд╕рд░реНрд╡рд░ рд╕рдорд╛рдзрд╛рди, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реЗ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред


рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд░рд╣реА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд▓реЛрдХрдкреНрд░рд┐рдп рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ DNS-over-HTTPS (DoH) рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдорд░реНрдерди рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЗрд╕рд╕реЗ рдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ DNS рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рдЦрддрд░реЛрдВ рд╕реЗ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред



1. рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдореБрджреНрджреЗ


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдХреА рд╡реНрдпрд╛рдкрдХ рд╢реБрд░реВрдЖрдд рдХреА рд╢реБрд░реБрдЖрдд рдХреЗрд╡рд▓ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╢реИрддрд╛рди рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╣реИред


рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдЬреЛ DoH рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреА рд╣реИ, рдЙрд╕рдХрд╛ рдзреНрдпрд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реЗрдм рдЯреНрд░реИрдлрд╝рд┐рдХ рдкрд░ рд╣реИред рджрд░рдЕрд╕рд▓, HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг HTTP / 2, рдЬрд┐рд╕ рдкрд░ DoH рдЖрдзрд╛рд░рд┐рдд рд╣реИ, WWW рдХреА рдиреАрдВрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗрд╡рд▓ рд╡реЗрдм рдирд╣реАрдВ рд╣реИред рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдИ-рдореЗрд▓, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рджреВрдд, рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░рдгрд╛рд▓реА, рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ, рдЖрджрд┐ рдЬреЛ HTTP рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдИ DoH рджреНрд╡рд╛рд░рд╛ рдПрдХ рд░рд╛рдордмрд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд (рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ) рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрдХрдиреАрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╡реИрд╕реЗ, рдбреАрдПрдирдПрд╕-рдЯреАрдПрд▓рдПрд╕ рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рдЙрдореНрдореАрджрд╡рд╛рд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирдХ DNS рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рдирдХ рдЯреАрдПрд▓рдПрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХрд▓ DoH рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд DNS рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреНрд▓рд╛рдЙрдбрдлрд╝реЗрдпрд░ рд╕реЗ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рдЖрдВрдХрдбрд╝реЛрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Google рдореЗрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдереАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЕрднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ, рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ DNS рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреА рд╕рдЯреАрдХрддрд╛ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рднреА рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИред


рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд▓реЗрдЦрдХ рдбреАрдПрдирдПрд╕-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░рд┐рдЪрдп рдХрд╛ рд╕рдорд░реНрдердХ рд╣реИ, рд▓реЗрдХрд┐рди рдбреАрдПрдирдПрд╕рдПрд╕рдПрд╕рдИрд╕реА / рдбреАрдПрдПрдирдИ рдХреЗ рд╕рд╛рде рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдЯреАрдПрд▓рдПрд╕ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ, рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЖрдЧреЗ рдирд╣реАрдВ рд╣реИ рдФрд░ рдбреАрдПрдирдПрд╕ рдЯреНрд░реИрдлрд┐рдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдХреЗрдВрджреНрд░реАрдХрд░рдг рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ DoH рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдорд░реНрдерди рдХреА рддреАрд╡реНрд░ рд╢реБрд░реВрдЖрдд рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рдЙрддреНрд╕рд╛рд╣реА рдЗрд╕рдХреЗ рднрд╛рдЧреНрдп рд╣реИрдВред


рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЕрдм рд╣рдо DoH рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдЧрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдирд┐рдЧрд░рд╛рдиреА рд╕реЗ рджреВрд░ рд░рд╣рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ DNS-HTTPS рд╕рд░реНрд╡рд░ рдкрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?


2. DNS-over-HTTPS


рдпрджрд┐ рдЖрдк DNS-over-HTTPS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ RFC8484 рдорд╛рдирдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╡реЗрдм рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ HTTP / 2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдПрдХ рдорд╛рдирдХ DNS рдкреИрдХреЗрдЯ рдХреЛ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ HTTP рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдкреНрд░реЗрд╖рд┐рдд DNS рдбреЗрдЯрд╛ (рджреЗрдЦреЗрдВ RFC1035 рдФрд░ рдмрд╛рдж рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ) рдХреЗ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдХреЛ рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдорд╛рдирдХ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ HTTP / 2 рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд TLS рдХрдиреЗрдХреНрд╢рди рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред


рдПрдХ DNS рдХреНрд╡реЗрд░реА рдХреЛ рдорд╛рдирдХ GET рдФрд░ POST рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рдмреЗрд╕ 64URL-рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдмреЙрдиреНрдб рдХреЗ рд░реВрдк рдореЗрдВ POST рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рдХрд╛рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, DNS рдХреЛ рдХреНрд╡реЗрд░реА рдФрд░ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╕рдордп, рдПрдХ рд╡рд┐рд╢реЗрд╖ MIME рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдбреАрдПрдирдПрд╕-рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред


root@eprove:~ # curl -H 'accept: application/dns-message' 'https://my.domain/dns-query?dns=q80BAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE' -v * Trying 2001:100:200:300::400:443... * TCP_NODELAY set * Connected to eprove.net (2001:100:200:300::400) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /usr/local/share/certs/ca-root-nss.crt CApath: none * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=my.domain * start date: Jul 22 00:07:13 2019 GMT * expire date: Oct 20 00:07:13 2019 GMT * subjectAltName: host "my.domain" matched cert's "my.domain" * issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0x801441000) > GET /dns-query?dns=q80BAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE HTTP/2 > Host: eprove.net > User-Agent: curl/7.65.3 > accept: application/dns-message > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * Connection state changed (MAX_CONCURRENT_STREAMS == 100)! < HTTP/2 200 < server: h2o/2.3.0-beta2 < content-type: application/dns-message < cache-control: max-age=86274 < date: Thu, 12 Sep 2019 13:07:25 GMT < strict-transport-security: max-age=15768000; includeSubDomains; preload < content-length: 45 < Warning: Binary output can mess up your terminal. Use "--output -" to tell Warning: curl to output it to your terminal anyway, or consider "--output Warning: <FILE>" to save to a file. * Failed writing body (0 != 45) * stopped the pause stream! * Connection #0 to host eprove.net left intact 

рдХреИрд╢-рдХрдВрдЯреНрд░реЛрд▓ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ : рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдбрд░ред рдЕрдзрд┐рдХрддрдо рдЖрдпреБ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд▓реМрдЯреЗ DNS рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП TTL рдорд╛рди (рдпрд╛ рдпрджрд┐ рдЙрдирдХрд╛ рд╕реЗрдЯ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп)ред


рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, DoH рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред


  • рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрджрд┐ рдпрд╣ GET рд╣реИ рддреЛ рдмреЗрд╕ 64URL рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдкреИрдХреЗрдЯ рдХреЛ рдбреАрдХреЛрдб рдХрд░реЗрдВред
  • рдЗрд╕ рдкреИрдХреЗрдЯ рдХреЛ DNS рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗрдВред
  • DNS рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  • рдкреНрд░рд╛рдкреНрдд рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдореЗрдВ рдиреНрдпреВрдирддрдо рдЯреАрдЯреАрдПрд▓ рдорд╛рди рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдПред
  • рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ HTTP рдкреНрд░рддрд┐рд╕рд╛рдж рд▓реМрдЯрд╛рдПрдВред

3. рдЦреБрдж рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рд╕рд░реНрд╡рд░


рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ DNS-over-HTTPS рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди, рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ HTTP / 2 H2O рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦрдХ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ (" рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди H2O рд╡реЗрдм рд╕рд░реНрд╡рд░ " рджреЗрдЦреЗрдВ)ред


рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ DoH рд╕рд░реНрд╡рд░ рдХреЗ рд╕рднреА рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ H2O рдореЗрдВ рдПрдХреАрдХреГрдд mruby рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рд╕реЙрдХреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (mrbgem) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА FreeBSD рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рдореМрдЬреВрдж H2O 2.3.0-beta2 рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрдХрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рд╕реЙрдХреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ / deps рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред


 root@beta:~ # uname -v FreeBSD 12.0-RELEASE-p10 GENERIC root@beta:~ # cd /usr/ports/www/h2o root@beta:/usr/ports/www/h2o # make extract ===> License MIT BSD2CLAUSE accepted by the user ===> h2o-2.2.6 depends on file: /usr/local/sbin/pkg - found ===> Fetching all distfiles required by h2o-2.2.6 for building ===> Extracting for h2o-2.2.6. => SHA256 Checksum OK for h2o-h2o-v2.2.6_GH0.tar.gz. ===> h2o-2.2.6 depends on file: /usr/local/bin/ruby26 - found root@beta:/usr/ports/www/h2o # cd work/h2o-2.2.6/deps/ root@beta:/usr/ports/www/h2o/work/h2o-2.2.6/deps # git clone https://github.com/iij/mruby-socket.git   ┬лmruby-socket┬╗тАж remote: Enumerating objects: 385, done. remote: Total 385 (delta 0), reused 0 (delta 0), pack-reused 385  : 100% (385/385), 98.02 KiB | 647.00 KiB/s, .  : 100% (208/208), . root@beta:/usr/ports/www/h2o/work/h2o-2.2.6/deps # ll total 181 drwxr-xr-x 9 root wheel 18 12 . 16:09 brotli/ drwxr-xr-x 2 root wheel 4 12 . 16:09 cloexec/ drwxr-xr-x 2 root wheel 5 12 . 16:09 golombset/ drwxr-xr-x 4 root wheel 35 12 . 16:09 klib/ drwxr-xr-x 2 root wheel 5 12 . 16:09 libgkc/ drwxr-xr-x 4 root wheel 26 12 . 16:09 libyrmcds/ drwxr-xr-x 13 root wheel 32 12 . 16:09 mruby/ drwxr-xr-x 5 root wheel 11 12 . 16:09 mruby-digest/ drwxr-xr-x 5 root wheel 10 12 . 16:09 mruby-dir/ drwxr-xr-x 5 root wheel 10 12 . 16:09 mruby-env/ drwxr-xr-x 4 root wheel 9 12 . 16:09 mruby-errno/ drwxr-xr-x 5 root wheel 14 12 . 16:09 mruby-file-stat/ drwxr-xr-x 5 root wheel 10 12 . 16:09 mruby-iijson/ drwxr-xr-x 5 root wheel 11 12 . 16:09 mruby-input-stream/ drwxr-xr-x 6 root wheel 11 12 . 16:09 mruby-io/ drwxr-xr-x 5 root wheel 10 12 . 16:09 mruby-onig-regexp/ drwxr-xr-x 4 root wheel 10 12 . 16:09 mruby-pack/ drwxr-xr-x 5 root wheel 10 12 . 16:09 mruby-require/ drwxr-xr-x 6 root wheel 10 12 . 16:10 mruby-socket/ drwxr-xr-x 2 root wheel 9 12 . 16:09 neverbleed/ drwxr-xr-x 2 root wheel 13 12 . 16:09 picohttpparser/ drwxr-xr-x 2 root wheel 4 12 . 16:09 picotest/ drwxr-xr-x 9 root wheel 16 12 . 16:09 picotls/ drwxr-xr-x 4 root wheel 8 12 . 16:09 ssl-conservatory/ drwxr-xr-x 8 root wheel 18 12 . 16:09 yaml/ drwxr-xr-x 2 root wheel 8 12 . 16:09 yoml/ root@beta:/usr/ports/www/h2o/work/h2o-2.2.6/deps # cd ../../.. root@beta:/usr/ports/www/h2o # make install clean ... 

рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирдХ рд╣реИред


 root@beta:/usr/ports/www/h2o # cd /usr/local/etc/h2o/ root@beta:/usr/local/etc/h2o # cat h2o.conf # this sample config gives you a feel for how h2o can be used # and a high-security configuration for TLS and HTTP headers # see https://h2o.examp1e.net/ for detailed documentation # and h2o --help for command-line options and settings # v.20180207 (c)2018 by Max Kostikov http://kostikov.co e-mail: max@kostikov.co user: www pid-file: /var/run/h2o.pid access-log: path: /var/log/h2o/h2o-access.log format: "%h %v %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" error-log: /var/log/h2o/h2o-error.log expires: off compress: on file.dirlisting: off file.send-compressed: on file.index: [ 'index.html', 'index.php' ] listen: port: 80 listen: port: 443 ssl: cipher-suite: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 cipher-preference: server dh-file: /etc/ssl/dhparams.pem certificate-file: /usr/local/etc/letsencrypt/live/eprove.net/fullchain.pem key-file: /usr/local/etc/letsencrypt/live/my.domain/privkey.pem hosts: "*.my.domain": paths: &go_tls "/": redirect: status: 301 url: https://my.domain/ "my.domain:80": paths: *go_tls "my.domain:443": header.add: "Strict-Transport-Security: max-age=15768000; includeSubDomains; preload" paths: "/dns-query": mruby.handler-file: /usr/local/etc/h2o/h2odoh.rb 

рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж URL / dns-query рд╣реИрдВрдбрд▓рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ DNS-HTTPS h2odoh рд╕рд░реНрд╡рд░, mruby рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ mruby.handler-file рд╣реИрдВрдбрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 root@beta:/usr/local/etc/h2o # cat h2odoh.rb # H2O HTTP/2 web server as DNS-over-HTTP service # v.20190908 (c)2018-2019 Max Kostikov https://kostikov.co e-mail: max@kostikov.co proc {|env| if env['HTTP_ACCEPT'] == "application/dns-message" case env['REQUEST_METHOD'] when "GET" req = env['QUERY_STRING'].gsub(/^dns=/,'') # base64URL decode req = req.tr("-_", "+/") if !req.end_with?("=") && req.length % 4 != 0 req = req.ljust((req.length + 3) & ~3, "=") end req = req.unpack1("m") when "POST" req = env['rack.input'].read else req = "" end if req.empty? [400, { 'content-type' => 'text/plain' }, [ "Bad Request" ]] else # --- ask DNS server sock = UDPSocket.new sock.connect("localhost", 53) sock.send(req, 0) str = sock.recv(4096) sock.close # --- find lowest TTL in response nans = str[6, 2].unpack1('n') # number of answers if nans > 0 # no DNS failure shift = 12 ttl = 0 while nans > 0 # process domain name compression if str[shift].unpack1("C") < 192 shift = str.index("\x00", shift) + 5 if ttl == 0 # skip question section next end end shift += 6 curttl = str[shift, 4].unpack1('N') shift += str[shift + 4, 2].unpack1('n') + 6 # responce data size if ttl == 0 or ttl > curttl ttl = curttl end nans -= 1 end cc = 'max-age=' + ttl.to_s else cc = 'no-cache' end [200, { 'content-type' => 'application/dns-message', 'content-length' => str.size, 'cache-control' => cc }, [ str ] ] end else [415, { 'content-type' => 'text/plain' }, [ "Unsupported Media Type" ]] end } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ DNS рдХреИрдбреЗрдЯреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдХреИрд╢рд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдирдХ FreeBSD рд╡рд┐рддрд░рдг рд╕реЗ рдЕрдирдмрд╛рдЙрдВрдб рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдерд╛рдиреАрдп DNS рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп DNS рдХреЗ рдкрддреЗ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред


 root@beta:/usr/local/etc/h2o # local-unbound verison usage: local-unbound [options] start unbound daemon DNS resolver. -h this help -c file config file to read instead of /var/unbound/unbound.conf file format is described in unbound.conf(5). -d do not fork into the background. -p do not create a pidfile. -v verbose (more times to increase verbosity) Version 1.8.1 linked libs: mini-event internal (it uses select), OpenSSL 1.1.1a-freebsd 20 Nov 2018 linked modules: dns64 respip validator iterator BSD licensed, see LICENSE in source package for details. Report bugs to unbound-bugs@nlnetlabs.nl root@eprove:/usr/local/etc/h2o # sockstat -46 | grep unbound unbound local-unbo 69749 3 udp6 ::1:53 *:* unbound local-unbo 69749 4 tcp6 ::1:53 *:* unbound local-unbo 69749 5 udp4 127.0.0.1:53 *:* unbound local-unbo 69749 6 tcp4 127.0.0.1:53 *:* 

рдпрд╣ рдПрдЪ 2 рдУ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реБрдЖред


 root@beta:/usr/local/etc/h2o # service h2o restart Stopping h2o. Waiting for PIDS: 69871. Starting h2o. start_server (pid:70532) starting now... 

4. рдкрд░реАрдХреНрд╖рдг


рддреЛ, рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рдФрд░ tcpdump рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рджреЗрдЦрдХрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред


 root@beta/usr/local/etc/h2o # curl -H 'accept: application/dns-message' 'https://my.domain/dns-query?dns=q80BAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE' Warning: Binary output can mess up your terminal. Use "--output -" to tell Warning: curl to output it to your terminal anyway, or consider "--output Warning: <FILE>" to save to a file. ... root@beta:~ # tcpdump -n -i lo0 udp port 53 -xx -XX -vv tcpdump: listening on lo0, link-type NULL (BSD loopback), capture size 262144 bytes 16:32:40.420831 IP (tos 0x0, ttl 64, id 37575, offset 0, flags [none], proto UDP (17), length 57, bad cksum 0 (->e9ea)!) 127.0.0.1.21070 > 127.0.0.1.53: [bad udp cksum 0xfe38 -> 0x33e3!] 43981+ A? example.com. (29) 0x0000: 0200 0000 4500 0039 92c7 0000 4011 0000 ....E..9....@... 0x0010: 7f00 0001 7f00 0001 524e 0035 0025 fe38 ........RN.5.%.8 0x0020: abcd 0100 0001 0000 0000 0000 0765 7861 .............exa 0x0030: 6d70 6c65 0363 6f6d 0000 0100 01 mple.com..... 16:32:40.796507 IP (tos 0x0, ttl 64, id 37590, offset 0, flags [none], proto UDP (17), length 73, bad cksum 0 (->e9cb)!) 127.0.0.1.53 > 127.0.0.1.21070: [bad udp cksum 0xfe48 -> 0x43fa!] 43981 q: A? example.com. 1/0/0 example.com. A 93.184.216.34 (45) 0x0000: 0200 0000 4500 0049 92d6 0000 4011 0000 ....E..I....@... 0x0010: 7f00 0001 7f00 0001 0035 524e 0035 fe48 .........5RN.5.H 0x0020: abcd 8180 0001 0001 0000 0000 0765 7861 .............exa 0x0030: 6d70 6c65 0363 6f6d 0000 0100 01c0 0c00 mple.com........ 0x0040: 0100 0100 0151 8000 045d b8d8 22 .....Q...].." ^C 2 packets captured 23 packets received by filter 0 packets dropped by kernel 

рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ example.com рдкрддрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ DNS рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдЕрдм рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ : рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред


рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдбреАрдПрдирдПрд╕-рдУрд╡рд░-рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХрд╛ рдкрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ DNS рдЬрд╛рдирдХрд╛рд░реА рдХреНрд╡реЗрд░реА рдХрд░реЗрдЧрд╛ред trr.uri рдпрд╣ рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ DNS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЖрдИрдкреА рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ URL рд╕реЗ рдбреЛрдореЗрди рдЖрдИрдкреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ редrr.bootstrapAddress ред рдФрд░, рдЕрдВрдд рдореЗрдВ, network.trr.mode рдкреИрд░рд╛рдореАрдЯрд░ рд╣реА, рдЬрд┐рд╕рдореЗрдВ DoH рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред рдорд╛рди рдХреЛ "3" рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдирд╛рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ DNS-over-HTTPS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛, рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд "2" DoH рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдЧрд╛, рдорд╛рдирдХ DNS рдПрдХреНрд╕реЗрд╕ рдХреЛ рдПрдХ рдХрдордмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред


5. рд▓рд╛рдн!


рд▓реЗрдЦ рд╕рд╣рд╛рдпрдХ рдерд╛? рддреЛ рдХреГрдкрдпрд╛ рд╢рд░реНрдореАрд▓реЗ рдордд рдмрдиреЛ рдФрд░ рджрд╛рди рдкреНрд░рдкрддреНрд░ (рдиреАрдЪреЗ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдзрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВред

Source: https://habr.com/ru/post/hi467237/


All Articles