์๊ฐ
Cisco, BlueCoat, FireEye์ ๊ฐ์ ์ ๋ช
ํ ์ ์กฐ์
์ฒด์ ์ต์ ๊ธฐ์
์ฝํ
์ธ ํํฐ๋ง ์์คํ
์ ๊ตญ๊ฐ ์ฐจ์์์ ์ ๊ทน์ ์ผ๋ก ๊ตฌํ๋๊ณ ์๋ ๋ณด๋ค ๊ฐ๋ ฅํ ์์คํ
์ธ DPI ์์คํ
๊ณผ ๋ง์ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ ์์
์ ํต์ฌ์ ๋ค์ด์ค๊ณ ๋๊ฐ๋ ์ธํฐ๋ท ํธ๋ํฝ์ ๊ฒ์ฌํ๊ณ ๋ธ๋/ํ์ดํธ ๋ชฉ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ์ธํฐ๋ท ์ฐ๊ฒฐ ๊ธ์ง ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ค ์์
์ ๊ธฐ๋ณธ์์ ์ ์ฌํ ์์น์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ฐํํ๋ ๋ฐฉ๋ฒ๋ ๊ณตํต์ ์ด ๋ง์ต๋๋ค.
DPI์ ๊ธฐ์ ์์คํ ์ ๋ชจ๋ ํจ๊ณผ์ ์ผ๋ก ์ฐํํ ์ ์๋ ๊ธฐ์ ์ค ํ๋๋ ๋๋ฉ์ธ ํ๋ก ํ ๊ธฐ์ ์ ๋๋ค. ๊ทธ ๋ณธ์ง์ ์ฐ๋ฆฌ๊ฐ ์ฐจ๋จ๋ ๋ฆฌ์์ค๋ก ์ด๋ํ์ฌ ํํ์ด ์ข์ ๋ค๋ฅธ ๊ณต๊ฐ ๋๋ฉ์ธ ๋ค์ ์จ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ถ๋ช ํ google.com๊ณผ ๊ฐ์ ์ด๋ค ์์คํ ์์๋ ์ฐจ๋จ๋์ง ์์ต๋๋ค.
์ด ๊ธฐ์ ์ ๊ดํด ์ด๋ฏธ ๋ง์ ๊ธฐ์ฌ๊ฐ ์์ฑ๋์์ผ๋ฉฐ ๋ง์ ์ฌ๋ก๊ฐ ์ ์๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธ๊ธฐ ์๊ณ ์ต๊ทผ ๋
ผ์๋ DNS-over-HTTPS ๋ฐ ์ํธํ๋ SNI ๊ธฐ์ ๊ณผ TLS 1.3 ํ๋กํ ์ฝ์ ์ ๋ฒ์ ์ ํตํด ๋๋ฉ์ธ ํ๋ก ํ
์ ๋ํ ๋ ๋ค๋ฅธ ์ต์
์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
๊ธฐ์ ์ ์ดํด
๋จผ์ , ๋ชจ๋ ์ฌ๋์ด ๋๊ฐ ๋๊ตฌ์ด๋ฉฐ ์ ์ด ๋ชจ๋ ๊ฒ์ด ํ์ํ์ง ์ดํดํ ์ ์๋๋ก ์ฝ๊ฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ ์ํฉ์๋ค. ์ฐ๋ฆฌ๋ eSNI ๋ฉ์ปค๋์ฆ์ ๋ํด ์ธ๊ธํ์ผ๋ฉฐ ๊ทธ ์๋์ ๋ํด์๋ ๋ ์์ธํ ๋ ผ์ํ ๊ฒ์ ๋๋ค. eSNI(์ํธํ๋ ์๋ฒ ์ด๋ฆ ํ์) ๋ฉ์ปค๋์ฆ์ TLS 1.3 ํ๋กํ ์ฝ์์๋ง ์ฌ์ฉํ ์ ์๋ SNI์ ๋ณด์ ๋ฒ์ ์ ๋๋ค. ์ฃผ์ ์์ด๋์ด๋ ๋ฌด์๋ณด๋ค๋ ์์ฒญ์ด ์ ์ก๋๋ ๋๋ฉ์ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ํธํํ๋ ๊ฒ์ ๋๋ค.
์ด์ eSNI ๋ฉ์ปค๋์ฆ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ต์ DPI ์๋ฃจ์ ์ ์ํด ์ฐจ๋จ๋ ์ธํฐ๋ท ๋ฆฌ์์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค(์๋ฅผ ๋ค์ด ์ ๋ช ํ ํ ๋ ํธ ์ถ์ ๊ธฐ rutracker.nl์ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค). ํ ๋ ํธ ์ถ์ ๊ธฐ์ ์น์ฌ์ดํธ์ ์ก์ธ์คํ๋ ค๊ณ ํ๋ฉด ๋ฆฌ์์ค๊ฐ ์ฐจ๋จ๋์์์ ๋ํ๋ด๋ ๊ณต๊ธ์์ ํ์ค ์คํ ์ด ํ์๋ฉ๋๋ค.
RKN ์น์ฌ์ดํธ์์ ์ด ๋๋ฉ์ธ์ ์ค์ ๋ก ์ค์ง ๋ชฉ๋ก์ ๋์ด๋์ด ์์ต๋๋ค.
whois๋ฅผ ์ฟผ๋ฆฌํ๋ฉด ๋๋ฉ์ธ ์์ฒด๊ฐ ํด๋ผ์ฐ๋ ์ ๊ณต์
์ฒด Cloudflare ๋ค์ "์จ๊ฒจ์ ธ" ์์์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ RKN์ "์ ๋ฌธ๊ฐ"์๋ ๋ฌ๋ฆฌ Beeline์ ๊ธฐ์ ์ ์ผ๋ก ๋ ๋ฅ์ํ ์ง์(๋๋ ์ ๋ช
ํ ๊ท์ ๊ธฐ๊ด์ ์ฐ๋ผ๋ฆฐ ๊ฒฝํ์ ํตํด ๋ฐฐ์ด)์ IP ์ฃผ์๋ก ์ฌ์ดํธ๋ฅผ ์ด๋ฆฌ์๊ฒ ๊ธ์งํ์ง ์๊ณ ๋๋ฉ์ธ ์ด๋ฆ์ ์ค์ง ๋ชฉ๋ก์ ์ถ๊ฐํ์ต๋๋ค. ๋์ผํ IP ์ฃผ์ ๋ค์ ์จ๊ฒจ์ง ๋ค๋ฅธ ๋๋ฉ์ธ์ด ๋ฌด์์ธ์ง ์ดํด๋ณด๊ณ ๊ทธ ์ค ํ๋๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ก์ธ์ค๊ฐ ์ฐจ๋จ๋์ง ์์๋์ง ํ์ธํ๋ฉด ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ป๊ฒ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋์? ๋ชจ๋ ํต์ ์ด https ํ๋กํ ์ฝ์ ํตํด ์ด๋ฃจ์ด์ง๊ณ ์์ง Beeline์ https ์ธ์ฆ์ ๋์ฒด๋ฅผ ํ์ธํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ธ์์ DPI๋ ๋ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ ๋๋ฉ์ธ์ ์๋์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? ๊ทธ ์ฌ๋์ ํฌ์๋ ฅ์ด ์๋ ๊ฑธ๊น, ์๋๋ฉด ๋ด๊ฐ ๋ฏธํ๋๊ณ ์๋ ๊ฑธ๊น?
Wireshark๋ฅผ ํตํ ํธ๋ํฝ์ ์ดํด๋ด์ผ๋ก์จ ์ด ์ง๋ฌธ์ ๋ตํด ๋ณด๊ฒ ์ต๋๋ค.
์คํฌ๋ฆฐ์ท์ ๋จผ์ ๋ธ๋ผ์ฐ์ ๊ฐ DNS๋ฅผ ํตํด ์๋ฒ์ IP ์ฃผ์๋ฅผ ์ป์ ๋ค์ ๋์ ์๋ฒ์ ํ์ค TCP ํธ๋์
ฐ์ดํฌ๊ฐ ๋ฐ์ํ ๋ค์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ SSL ์ฐ๊ฒฐ์ ์ค์ ํ๋ ค๊ณ ์๋ํ๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ์ํด ์๋ณธ ๋๋ฉ์ธ ์ด๋ฆ์ด ์ผ๋ฐ ํ
์คํธ๋ก ํฌํจ๋ SSL ํด๋ผ์ด์ธํธ Hello ํจํท์ ๋ณด๋
๋๋ค. ์ด ํ๋๋ ์ฐ๊ฒฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ผ์ฐํ
ํ๊ธฐ ์ํด cloudflare ํ๋ฐํธ์๋ ์๋ฒ์ ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ณต๊ธ์ DPI๊ฐ ์ฐ๋ฆฌ๋ฅผ ์ก์์ ์ฐ๊ฒฐ์ ๋์ต๋๋ค. ๋์์ ๊ณต๊ธ์๋ก๋ถํฐ ์คํ
์ ๋ฐ์ง ๋ชปํ๋ฉฐ ์ฌ์ดํธ๊ฐ ๋นํ์ฑํ๋์๊ฑฐ๋ ๋จ์ํ ์๋ํ์ง ์๋ ๊ฒ์ฒ๋ผ ํ์ค ๋ธ๋ผ์ฐ์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
์ด์ ์ง์นจ์ ์์ฑ๋ ๋๋ก ๋ธ๋ผ์ฐ์ ์์ eSNI ๋ฉ์ปค๋์ฆ์ ํ์ฑํํด ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฅผ ์ํด Firefox ๊ตฌ์ฑ ํ์ด์ง๋ฅผ ์ฝ๋๋ค. ์ ๋ณด : ์ค์ ๋ค์ ์ค์ ์ ํ์ฑํํฉ๋๋ค.
network.trr.mode = 2;
network.trr.uri = https://mozilla.cloudflare-dns.com/dns-query
network.security.esni.enabled = true
๊ทธ๋ฐ ๋ค์ cloudflare ์น์ฌ์ดํธ์์ ์ค์ ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
์ง์. ์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ํธ๋์ปค๋ VPN์ด๋ โโํ๋ก์ ์๋ฒ ์์ด ์ด๋ ธ์ต๋๋ค. ์ด์ Wireshark์ ํธ๋ํฝ ๋คํ๋ฅผ ์ดํด๋ณด๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒ์๋ SSL ํด๋ผ์ด์ธํธ hello ํจํค์ง์ ๋์ ๋๋ฉ์ธ์ด ๋ช
์์ ์ผ๋ก ํฌํจ๋์ด ์์ง ์์ง๋ง ๋์ ํจํค์ง์ ์ ํ๋(crypted_server_name)๊ฐ ๋ํ๋ฌ์ต๋๋ค. ์ฌ๊ธฐ์ rutracker.nl ๊ฐ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ cloudflare ํ๋ฐํธ์๋ ์๋ฒ๋ง ์ด๋ฅผ ํด๋
ํ ์ ์์ต๋๋ค. ํ๋. ๊ทธ๋ ๋ค๋ฉด ๊ณต๊ธ์ DPI๋ ์์ ์ป๊ณ ๊ทธ๋ฌํ ํธ๋ํฝ์ ํ์ฉํ ์๋ฐ์ ์์ต๋๋ค. ์ํธํ์๋ ๋ค๋ฅธ ์ต์
์ด ์์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด์์ต๋๋ค. ์ด์ ์ข ๋ ๊ตฌ์ฒด์ ์ด๊ณ ํฅ๋ฏธ๋ก์ด ๊ฒ์ ์ ์ฉํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋จผ์ ๋์ผํ ์ปฌ์ eSNI๋ฅผ ์ฌ์ฉํ์ฌ TLS 1.3๊ณผ ํจ๊ป ์๋ํ๋๋ก ๊ฐ๋ฅด์น๊ณ ๋์์ eSNI ๊ธฐ๋ฐ ๋๋ฉ์ธ ํ๋ก ํ ์์ฒด๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
eSNI๋ฅผ ์ฌ์ฉํ ๋๋ฉ์ธ ํ๋ก ํ
Curl์ https ํ๋กํ ์ฝ์ ํตํด ์ฐ๊ฒฐํ๊ธฐ ์ํด ํ์ค openssl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋จผ์ ๊ฑฐ๊ธฐ์์ eSNI ์ง์์ ์ ๊ณตํด์ผ ํฉ๋๋ค. openssl ๋ง์คํฐ ๋ธ๋์น์๋ ์์ง eSNI ์ง์์ด ์์ผ๋ฏ๋ก ํน์ openssl ๋ธ๋์น๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ปดํ์ผํ๊ณ ์ค์นํด์ผ ํฉ๋๋ค.
GitHub์์ ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ํ์๋๋ก ์ปดํ์ผํฉ๋๋ค.
$ git clone https://github.com/sftcd/openssl
$ cd openssl
$ ./config
$ make
$ cd esnistuff
$ make
๋ค์์ผ๋ก, ์ปฌ์ ์ฌ์ฉํ์ฌ ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ์ปดํ์ผ๋ openssl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ์ ๊ตฌ์ฑํฉ๋๋ค.
$ cd $HOME/code
$ git clone https://github.com/niallor/curl.git curl-esni
$ cd curl-esni
$ export LD_LIBRARY_PATH=/opt/openssl
$ ./buildconf
$ LDFLAGS="-L/opt/openssl" ./configure --with-ssl=/opt/openssl --enable-esni --enable-debug
์ฌ๊ธฐ์๋ openssl์ด ์๋ ๋ชจ๋ ๋๋ ํฐ๋ฆฌ(์ด ๊ฒฝ์ฐ /opt/openssl/)๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ๊ณ ๊ตฌ์ฑ ํ๋ก์ธ์ค๊ฐ ์ค๋ฅ ์์ด ์งํ๋๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ตฌ์ฑ์ด ์ฑ๊ณตํ๋ฉด ๋ค์ ์ค์ด ํ์๋ฉ๋๋ค.
๊ฒฝ๊ณ : esni ESNI๊ฐ ํ์ฑํ๋์์ง๋ง ์คํ์ ์ด๋ผ๊ณ ํ์๋์์ต๋๋ค. ์ฃผ์ํด์ ์ฌ์ฉํ์ธ์!
$ make
ํจํค์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ ํ openssl์ ํน์ bash ํ์ผ์ ์ฌ์ฉํ์ฌ ์ปฌ์ ๊ตฌ์ฑํ๊ณ ์คํํฉ๋๋ค. ํธ์์ ์ปฌ์ ์ฌ์ฉํ์ฌ ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํด ๋ณด๊ฒ ์ต๋๋ค.
cp /opt/openssl/esnistuff/curl-esni
Wireshark์ DNS ๋ฐ TLS ํจํท์ ๋์์ ๊ธฐ๋กํ๋ ๋์์ cloudflare ์๋ฒ์ ํ ์คํธ https ์์ฒญ์ ๋ณด๋ ๋๋ค.
$ ESNI_COVER="www.hello-rkn.ru" ./curl-esni https://cloudflare.com/
์๋ฒ ์๋ต์์๋ openssl ๋ฐ cur์ ๋ง์ ๋๋ฒ๊น ์ ๋ณด ์ธ์๋ cloudflare๋ก๋ถํฐ ์ฝ๋ 301์ด ํฌํจ๋ HTTP ์๋ต์ ๋ฐ๊ฒ ๋ฉ๋๋ค.
HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 13:12:55 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: max-age=3600
< Expires: Sun, 03 Nov 2019 14:12:55 GMT
< Location: https://www.cloudflare.com/
์ด๋ ์์ฒญ์ด ๋์ ์๋ฒ์ ์ฑ๊ณต์ ์ผ๋ก ์ ๋ฌ๋์ด ๋ฃ๊ณ ์ฒ๋ฆฌ๋์์์ ๋ํ๋ ๋๋ค.
์ด์ Wireshark์ ํธ๋ํฝ ๋คํ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ณต๊ธ์ DPI๊ฐ ํ์ธํ ๋ด์ฉ์ ๋๋ค.
์ปฌ์ ๋จผ์ cloudflare ์๋ฒ์ ๊ณต๊ฐ eSNI ํค(_esni.cloudflare.com(ํจํค์ง ๋ฒํธ 13)์ ๋ํ TXT DNS ์์ฒญ)๋ฅผ ์ํด DNS ์๋ฒ๋ก ์ ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์, openssl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ์ SNI ํ๋๊ฐ ์ด์ ๋จ๊ณ์์ ์ป์ ๊ณต๊ฐ ํค(ํจํท #1.3)๋ก ์ํธํ๋ cloudflare ์๋ฒ์ TLS 22 ์์ฒญ์ ๋ณด๋์ต๋๋ค. ๊ทธ๋ฌ๋ eSNI ํ๋ ์ธ์๋ SSL-hello ํจํท์๋ ์ผ๋ฐ์ ์ธ ๊ณต๊ฐ SNI๊ฐ ํฌํจ๋ ํ๋๋ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด๋ ์์์ ๊ด๊ณ์์ด ์ง์ ํ ์ ์์ต๋๋ค(์ด ๊ฒฝ์ฐ์๋ -
์ด ๊ณต๊ฐ SNI ํ๋๋ cloudflare ์๋ฒ์์ ์ฒ๋ฆฌํ ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๊ณ ๋ ค๋์ง ์์์ผ๋ฉฐ ๊ณต๊ธ์ DPI์ ๋ง์คํฌ๋ก๋ง ์ฌ์ฉ๋์์ต๋๋ค. cloudflare ์๋ฒ๋ SSL-hello ํจํท์ ์์ ํ๊ณ eSNI๋ฅผ ํด๋ ํ ํ ๊ฑฐ๊ธฐ์์ ์๋ SNI๋ฅผ ์ถ์ถํ๊ณ ์๋ฌด ์ผ๋ ์์๋ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌํ์ต๋๋ค(eSNI๋ฅผ ๊ฐ๋ฐํ ๋ ๊ณํํ ๋๋ก ๋ชจ๋ ์์ ์ ์ ํํ๊ฒ ์ํํ์ต๋๋ค).
์ด ๊ฒฝ์ฐ DPI ๊ด์ ์์ ํฌ์ฐฉํ ์ ์๋ ์ ์ผํ ๊ฒ์ _esni.cloudflare.com์ ๋ํ ๊ธฐ๋ณธ DNS ์์ฒญ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ด ๋ฉ์ปค๋์ฆ์ด ๋ด๋ถ์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ง DNS ์์ฒญ์ ๊ณต๊ฐํ์ต๋๋ค.
๋ง์นจ๋ด DPI ์๋์์ ๊น๊ฐ๋ฅผ ๊บผ๋ด๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ธ๊ธํ DNS-over-HTTPS ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. ์ฝ๊ฐ์ ์ค๋ช - DOH๋ HTTPS๋ฅผ ํตํด DNS ์์ฒญ์ ๋ณด๋ด ์ค๊ฐ์ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ ์ ์๋ ํ๋กํ ์ฝ์ ๋๋ค.
์์ฒญ์ ๋ค์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฒ์๋ DNS๊ฐ ์๋ https ํ๋กํ ์ฝ์ ํตํด ๊ณต๊ฐ eSNI ํค๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
ESNI_COVER="www.hello-rkn.ru" DOH_URL=https://mozilla.cloudflare-dns.com/dns-query ./curl-esni https://cloudflare.com/
์์ฒญ ํธ๋ํฝ ๋คํ๋ ์๋ ์คํฌ๋ฆฐ์ท์ ํ์๋ฉ๋๋ค.
์ปฌ์ ๋จผ์ DoH ํ๋กํ ์ฝ(์๋ฒ 104.16.249.249์ ๋ํ https ์ฐ๊ฒฐ)์ ํตํด mozilla.cloudflare-dns.com ์๋ฒ์ ์ก์ธ์คํ์ฌ SNI ์ํธํ๋ฅผ ์ํ ๊ณต๊ฐ ํค ๊ฐ์ ์ป์ ๋ค์ ๋์์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์๋ฒ, ๋๋ฉ์ธ ๋ค์ ์จ์ด
์์ DoH ํ์ธ ํ๋ก๊ทธ๋จ mozilla.cloudflare-dns.com ์ธ์๋ ์ ๋ช
ํ ์ฌ์
ํ ๊ธฐ์
๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ DoH ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
ESNI_COVER="www.kremlin.ru" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ต์ ์ป์ต๋๋ค:
< HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 14:10:22 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=da0144d982437e77b0b37af7d00438b1a1572790222; expires=Mon, 02-Nov-20 14:10:22 GMT; path=/; domain=.rutracker.nl; HttpOnly; Secure
< Location: https://rutracker.nl/forum/index.php
< CF-Cache-Status: DYNAMIC
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 52feee696f42d891-CPH
์ด ๊ฒฝ์ฐ DoH ํ์ธ์ dns.google์ ์ฌ์ฉํ์ฌ ์ฐจ๋จ๋ rutracker.nl ์๋ฒ๋ก ์ ํํ๊ณ (์ฌ๊ธฐ์๋ ์คํ๊ฐ ์์ต๋๋ค. ์ด์ ์ ๋ช
ํ ํ์ฌ๋ ์์ฒด์ ์ธ XNUMX์ฐจ ๋๋ฉ์ธ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค) ์๋ฐํ ๋งํ๋ฉด ๋ค๋ฅธ ๋๋ฉ์ธ์ผ๋ก ์ฐ๋ฆฌ ์์ ์ ๋ฎ์์ต๋๋ค. ๋ชจ๋ DPI๊ฐ ์ฃฝ์์ ๊ณ ํต ์์์ ์ฐจ๋จ๋๋ ๊ฒ์ ๊ธ์ง๋์ด ์์ต๋๋ค. ๋ฐ์ ์๋ต์ ๋ฐํ์ผ๋ก ๊ทํ๋ ๋น์ฌ์ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์์ ์ดํดํ ์ ์์ต๋๋ค.
๊ณต๊ธ์์ DPI๊ฐ ํ์ง๋ก ์ ์กํ๋ ๊ณต๊ฐ SNI์ ์๋ตํ๋์ง ์ถ๊ฐ๋ก ํ์ธํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ธ์ง๋ ๋ฆฌ์์ค(์: ๋ ๋ค๋ฅธ "์ข์" ํ ๋ ํธ ์ถ์ ๊ธฐ)๋ฅผ ๊ฐ์ฅํ์ฌ rutracker.nl์ ์์ฒญํ ์ ์์ต๋๋ค.
$ ESNI_COVER="rutor.info" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/
์๋ฒ๋ก๋ถํฐ ์๋ต์ ๋ฐ์ง ๋ชปํฉ๋๋ค. ์๋ํ๋ฉด... ์ฐ๋ฆฌ์ ์์ฒญ์ DPI ์์คํ ์ ์ํด ์ฐจ๋จ๋ฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ๋ํ ์งง์ ๊ฒฐ๋ก
๊ทธ๋์ ์ฐ๋ฆฌ๋ openssl๊ณผcurl์ ์ฌ์ฉํ์ฌ eSNI์ ๊ธฐ๋ฅ์ ์์ฐํ๊ณ eSNI๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฉ์ธ ํ๋ก ํ
์๋์ ํ
์คํธํ ์ ์์์ต๋๋ค. ๊ฐ์ ๋ฐฉ์์ผ๋ก, openssl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋๋ฉ์ธ์ "๊ฐ์ฅ" ์๋ํ๋ ์ฆ๊ฒจ ์ฌ์ฉํ๋ ๋๊ตฌ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์ ๊ธฐ์ฌ์์ ํ์ธํ์ธ์.
์ถ์ฒ : habr.com