Google Cloud ๊ธฐ์ˆ  ์ง€์›์—์„œ DNS ํŒจํ‚ท ๋ˆ„๋ฝ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ

Google ๋ธ”๋กœ๊ทธ ํŽธ์ง‘๊ธฐ์—์„œ: Google Cloud Technical Solutions(TSE) ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ง€์› ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‚˜์š”? TSE ๊ธฐ์ˆ  ์ง€์› ์—”์ง€๋‹ˆ์–ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ณ ํ•œ ๋ฌธ์ œ ์›์ธ์„ ์‹๋ณ„ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ผ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ์—ฌ๋Ÿฌ ์—”์ง€๋‹ˆ์–ด์˜ ์ฃผ์˜๊ฐ€ ๋™์‹œ์— ํ•„์š”ํ•œ ํ‹ฐ์ผ“์— ์ง๋ฉดํ•  ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” TSE ์ง์› ์ค‘ ํ•œ ๋ช…์ด ์ตœ๊ทผ ์—…๋ฌด์—์„œ ๋ฐœ์ƒํ•œ ๋งค์šฐ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. DNS ํŒจํ‚ท์ด ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ. ์ด ์ด์•ผ๊ธฐ์—์„œ๋Š” ์—”์ง€๋‹ˆ์–ด๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด์„œ ์–ด๋–ค ์ƒˆ๋กœ์šด ์ ์„ ๋ฐฐ์› ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ด์•ผ๊ธฐ๋ฅผ ํ†ตํ•ด ๋ฟŒ๋ฆฌ ๊นŠ์€ ๋ฒ„๊ทธ์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Google Cloud์— ์ง€์› ํ‹ฐ์ผ“์„ ์ œ์ถœํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ๋„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Google Cloud ๊ธฐ์ˆ  ์ง€์›์—์„œ DNS ํŒจํ‚ท ๋ˆ„๋ฝ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ

๋ฌธ์ œ ํ•ด๊ฒฐ์€ ๊ณผํ•™์ด์ž ์˜ˆ์ˆ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์€ ์‹œ์Šคํ…œ์˜ ๋น„ํ‘œ์ค€ ๋™์ž‘ ์ด์œ ์— ๋Œ€ํ•œ ๊ฐ€์„ค์„ ์„ธ์šฐ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋ฉฐ, ๊ทธ ํ›„์— ์‹œ์Šคํ…œ์˜ ๊ฐ•๋„๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์„ค์„ ์„ธ์šฐ๊ธฐ ์ „์— ๋จผ์ € ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๊ณต์‹ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์งˆ๋ฌธ์ด ๋„ˆ๋ฌด ๋ชจํ˜ธํ•˜๊ฒŒ ๋“ค๋ฆฌ๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌธ์ œ ํ•ด๊ฒฐ์˜ "๊ธฐ์ˆ "์ž…๋‹ˆ๋‹ค.

Google Cloud์—์„œ๋Š” Google Cloud๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด TSE ์—”์ง€๋‹ˆ์–ด๋Š” ์‹œ์Šคํ…œ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋งŒํผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ตฌ์„ฑ์„ ๋ณผ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ์˜ ๊ฐ€์„ค์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ(์—”์ง€๋‹ˆ์–ด)๋Š” ์‹œ์Šคํ…œ์„ ์‹ ์†ํ•˜๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž๋™์ฐจ ์„œ๋น„์Šค์˜ ๊ธฐ๊ณ„๊ณต๊ณผ ๊ฐ™์€ ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ์น˜๊ณ  ๋‹จ์ˆœํžˆ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ID๋ฅผ ๋ณด๋‚ด์ค„ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๋Š” ๋ฐ˜๋ฉด, ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค๋Š” ์ •๋ณด ์ˆ˜์ง‘, ๊ฐ€์„ค ํ˜•์„ฑ ๋ฐ ํ™•์ธ(๋˜๋Š” ๋ฐ˜๋ฐ•), ๋Œ€ํ™” ํ˜•์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ ๊ฒฐ์ •์˜ ๋ฌธ์ œ๋Š” ๋‚ด๋‹ด์ž์™€์˜ ์˜์‚ฌ์†Œํ†ต์— ๊ธฐ์ดˆํ•œ๋‹ค.

๋ฌธ์ œ์˜ ๋ฌธ์ œ

์˜ค๋Š˜์€ ์ข‹์€ ๊ฒฐ๋ง์„ ๊ฐ€์ง„ ์ด์•ผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์™”์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ์‚ฌ๋ก€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ํ•ด๊ฒฐ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งค์šฐ ์ž์„ธํ•˜๊ณ  ์ •ํ™•ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ฒซ ๋ฒˆ์งธ ํ‹ฐ์ผ“์˜ ์‚ฌ๋ณธ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ฐ€ ์ •๋ณด๋ฅผ ์ˆจ๊ธฐ๋„๋ก ํŽธ์ง‘๋จ).
Google Cloud ๊ธฐ์ˆ  ์ง€์›์—์„œ DNS ํŒจํ‚ท ๋ˆ„๋ฝ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ
์ด ๋ฉ”์‹œ์ง€์—๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์œ ์šฉํ•œ ์ •๋ณด๊ฐ€ ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŠน์ • VM์ด ์ง€์ •๋จ
  • ๋ฌธ์ œ ์ž์ฒด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค - DNS๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์œ„์น˜(VM ๋ฐ ์ปจํ…Œ์ด๋„ˆ)๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•œ ๋‹จ๊ณ„๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์š”์ฒญ์€ "P1: Critical Impact - ์„œ๋น„์Šค๋ฅผ ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ"์œผ๋กœ ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” "Follow the Sun" ๊ณ„ํš์— ๋”ฐ๋ผ ์ƒํ™ฉ์„ ์—ฐ์ค‘๋ฌดํœด 24์‹œ๊ฐ„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์š”์ฒญ ์šฐ์„ ์ˆœ์œ„), ์‹œ๊ฐ„๋Œ€๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ํ•œ ๊ธฐ์ˆ  ์ง€์› ํŒ€์—์„œ ๋‹ค๋ฅธ ํŒ€์œผ๋กœ ์ด์ „๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ์ทจ๋ฆฌํžˆ์— ์žˆ๋Š” ์šฐ๋ฆฌ ํŒ€์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ๋Š” ์ด๋ฏธ ์ „ ์„ธ๊ณ„์— ํผ์ ธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ์ž๋Š” ์™„ํ™” ์กฐ์น˜๋ฅผ ์ทจํ–ˆ์ง€๋งŒ ์•„์ง ๊ทผ๋ณธ ์›์ธ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•„ ์ƒ์‚ฐ ์ƒํ™ฉ์ด ๋ฐ˜๋ณต๋  ๊ฒƒ์„ ๋‘๋ ค์›Œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ‹ฐ์ผ“์ด ์ทจ๋ฆฌํžˆ์— ๋„์ฐฉํ–ˆ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋‹ค์Œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํ•จ์œ ๋Ÿ‰ /etc/hosts
  • ํ•จ์œ ๋Ÿ‰ /etc/resolv.conf
  • ์ถœ๋ ฅ iptables-save
  • ํŒ€์—์„œ ์กฐ๋ฆฝ ngrep PCAP ํŒŒ์ผ

์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "์กฐ์‚ฌ" ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์ฒซ ๊ฑธ์Œ

์šฐ์„ , ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„์˜ ๋กœ๊ทธ์™€ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„๋Š” IP ์ฃผ์†Œ 169.254.169.254์— ์‘๋‹ตํ•˜๋ฉฐ ๋ฌด์—‡๋ณด๋‹ค๋„ ๋„๋ฉ”์ธ ์ด๋ฆ„ ์ œ์–ด๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฉํ™”๋ฒฝ์ด VM์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ํŒจํ‚ท์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ ์ด์ƒํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. nmap ๊ฒ€์‚ฌ๋Š” UDP ํŒจํ‚ท ์†์‹ค์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ์ฃผ์š” ๊ฐ€์„ค์„ ๋ฐ˜๋ฐ•ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์˜ต์…˜๊ณผ ๋ฐฉ๋ฒ•์„ ์ •์‹ ์ ์œผ๋กœ ์ƒ๊ฐํ•ด ๋ƒˆ์Šต๋‹ˆ๋‹ค.

  • ํŒจํ‚ท์ด ์„ ํƒ์ ์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๊นŒ? => iptables ๊ทœ์น™์„ ํ™•์ธํ•˜์„ธ์š”
  • ๋„ˆ๋ฌด ์ž‘์ง€ ์•Š๋‚˜์š”? MTU? => ์ถœ๋ ฅ ํ™•์ธ ip a show
  • ๋ฌธ์ œ๊ฐ€ UDP ํŒจํ‚ท์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‚˜์š”, ์•„๋‹ˆ๋ฉด TCP์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋‚˜์š”? => ์ฐจ๋ฅผ ๋ชฐ๊ณ  ๊ฐ€๋‹ค dig +tcp
  • ๋ฐœ๊ตด ์ƒ์„ฑ ํŒจํ‚ท์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๊นŒ? => ์ฐจ๋ฅผ ๋ชฐ๊ณ  ๊ฐ€๋‹ค tcpdump
  • libdns๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋‚˜์š”? => ์ฐจ๋ฅผ ๋ชฐ๊ณ  ๊ฐ€๋‹ค strace ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํŒจํ‚ท ์ „์†ก์„ ํ™•์ธํ•˜๋ ค๋ฉด

์—ฌ๊ธฐ์—์„œ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „ํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ†ตํ™” ์ค‘์— ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ๋ฒˆ ํ™•์ธํ•œ ํ›„ ์ด์œ  ๋ชฉ๋ก์—์„œ iptables ๊ทœ์น™์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•˜๊ณ  MTU๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค dig +tcp google.com (TCP)๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ dig google.com (UDP)๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ์ฐจ๋ฅผ ๋ชฐ๊ณ  ๊ฐ€๋ฒ„๋ฆฐ tcpdump ์ผํ•˜๋Š” ๋™์•ˆ dig, UDP ํŒจํ‚ท์ด ๋ฐ˜ํ™˜๋˜๊ณ  ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์ฐจ๋ฅผ ๋ชฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค strace dig google.com ๊ทธ๋ฆฌ๊ณ  dig๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. sendmsg() ะธ recvms()๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๋ฒˆ์งธ๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ๊ทผ๋ฌด ์‹œ๊ฐ„์ด ์ข…๋ฃŒ๋˜์–ด ๋ฌธ์ œ๋ฅผ ๋‹ค์Œ ์‹œ๊ฐ„๋Œ€๋กœ ํ™•๋Œ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์š”์ฒญ์€ ์šฐ๋ฆฌ ํŒ€์˜ ๊ด€์‹ฌ์„ ๋ถˆ๋Ÿฌ์ผ์œผ์ผฐ๊ณ  ๋™๋ฃŒ๋Š” scrapy Python ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ DNS ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

from scapy.all import *

answer = sr1(IP(dst="169.254.169.254")/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname="google.com")),verbose=0)
print ("169.254.169.254", answer[DNS].summary())

์ด ์กฐ๊ฐ์€ DNS ํŒจํ‚ท์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด DNS ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ด๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ˆ˜์ค€์—์„œ ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ '์„ธ๊ณ„ ์ผ์ฃผ' ํ›„์— ์š”์ฒญ์ด ์šฐ๋ฆฌ ํŒ€์œผ๋กœ ๋Œ์•„์˜ค๊ณ , ์š”์ฒญ์ด ์ด๋ฆฌ ์ €๋ฆฌ ๋Œ์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ํŽธ๋ฆฌํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์™„์ „ํžˆ ๋‚˜ ์ž์‹ ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ ์‚ฌ์šฉ์ž๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€์˜ ์Šค๋ƒ…์ƒท์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์–ด ๋ฌธ์ œ ํ•ด๊ฒฐ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ถ„์„ํ•˜๋„๋ก ์š”์ฒญํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒƒ์„ ์Šค์Šค๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋™๋ฃŒ๋“ค์ด ๋‚˜๋ฅผ ์กฐ๊ธˆ์”ฉ ๋ถ€๋Ÿฌ์›Œํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ ์‹ฌ์„ ๋จน์œผ๋ฉด์„œ ์šฐ๋ฆฌ๋Š” ๊ฐœ์ข…์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์ง€๋งŒ, ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•„๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์‚ฌ์šฉ์ž ์ž์‹ ์ด ์ด๋ฏธ ๊ฒฐ๊ณผ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์กฐ์น˜๋ฅผ ์ทจํ–ˆ๊ณ  ์„œ๋‘๋ฅด์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•  ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ด€์‹ฌ ์žˆ๋Š” ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—„์ฒญ๋‚œ!

ํ•œ๋ฐœ ๋’ค๋กœ ๋ฌผ๋Ÿฌ์„œ๋‹ค

์‹œ์Šคํ…œ ์—”์ง€๋‹ˆ์–ด ์ง์œ„์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฉด์ ‘ ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. www.google.com? ํ›„๋ณด์ž๋Š” ์…ธ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„, ์‹œ์Šคํ…œ ์ปค๋„, ๋„คํŠธ์›Œํฌ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์งˆ๋ฌธ์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์›ƒ๋Š”๋‹ค: ๊ฐ€๋” ๋ฉด์ ‘ ์งˆ๋ฌธ์ด ์‹ค์ƒํ™œ์—์„œ ์œ ์šฉํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค...

๋‚˜๋Š” ์ด HR ์งˆ๋ฌธ์„ ํ˜„์žฌ ๋ฌธ์ œ์— ์ ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋žต์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด, DNS ์ด๋ฆ„์„ ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ libdns์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. libdns๋Š” ์ ‘์†ํ•ด์•ผ ํ•˜๋Š” DNS ์„œ๋ฒ„์˜ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ๋Š” 169.254.169.254, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„์ž„).
  3. libdns๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ UDP ์†Œ์ผ“(SOKET_DGRAM)์„ ์ƒ์„ฑํ•˜๊ณ  DNS ์ฟผ๋ฆฌ์™€ ํ•จ๊ป˜ UDP ํŒจํ‚ท์„ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  4. sysctl ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ปค๋„ ์ˆ˜์ค€์—์„œ UDP ์Šคํƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ปค๋„์€ ํ•˜๋“œ์›จ์–ด์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  6. ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ํŒจํ‚ท์„ ํฌ์ฐฉํ•˜์—ฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„์™€ ์ ‘์ด‰ ์‹œ ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  7. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„๋Š” ๋งˆ์ˆ ์ฒ˜๋Ÿผ DNS ์ด๋ฆ„์„ ํ™•์ธํ•˜๊ณ  ๋™์ผํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ๊ธฐ์ˆ  ์ง€์›์—์„œ DNS ํŒจํ‚ท ๋ˆ„๋ฝ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ
์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๊ณ ๋ คํ•œ ๊ฐ€์„ค์ด ๋ฌด์—‡์ธ์ง€ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ€์„ค: ์†์ƒ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ํ…Œ์ŠคํŠธ 1: ์‹œ์Šคํ…œ์—์„œ strace๋ฅผ ์‹คํ–‰ํ•˜๊ณ  dig๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์˜ฌ๋ฐ”๋ฅธ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ 2: srapy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์šฐํšŒํ•˜๋Š” ์ด๋ฆ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ
  • ๊ฒฐ๊ณผ: ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ํ…Œ์ŠคํŠธ 3: libdns ํŒจํ‚ค์ง€ ๋ฐ md5sum ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์—์„œ rpm โ€“V ์‹คํ–‰
  • ๊ฒฐ๊ณผ: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋Š” ์ž‘๋™ ์ค‘์ธ ์šด์˜ ์ฒด์ œ์˜ ์ฝ”๋“œ์™€ ์™„์ „ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ 4: ์ด ๋™์ž‘ ์—†์ด VM์— ์‚ฌ์šฉ์ž์˜ ๋ฃจํŠธ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ , chroot๋ฅผ ์‹คํ–‰ํ•˜๊ณ , DNS๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: DNS๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒฐ๋ก : ๋ฌธ์ œ๋Š” ๋„์„œ๊ด€์— ์žˆ์ง€ ์•Š์•„

๊ฐ€์„ค: DNS ์„ค์ •์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ 1: tcpdump๋ฅผ ํ™•์ธํ•˜๊ณ  dig ์‹คํ–‰ ํ›„ DNS ํŒจํ‚ท์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „์†ก ๋ฐ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ํŒจํ‚ท์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ 2: ์„œ๋ฒ„์—์„œ ๋‹ค์‹œ ํ™•์ธ /etc/nsswitch.conf ะธ /etc/resolv.conf
  • ๊ฒฐ๊ณผ: ๋ชจ๋“  ๊ฒƒ์ด ์ •ํ™•ํ•จ

ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒฐ๋ก : ๋ฌธ์ œ๋Š” DNS ๊ตฌ์„ฑ์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค

๊ฐ€์„ค: ์ฝ”์–ด ์†์ƒ

  • ํ…Œ์ŠคํŠธ: ์ƒˆ ์ปค๋„ ์„ค์น˜, ์„œ๋ช… ํ™•์ธ, ๋‹ค์‹œ ์‹œ์ž‘
  • ๊ฒฐ๊ณผ: ๋น„์Šทํ•œ ํ–‰๋™

ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒฐ๋ก : ์ปค๋„์ด ์†์ƒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค

๊ฐ€์„ค: ์‚ฌ์šฉ์ž ๋„คํŠธ์›Œํฌ(๋˜๋Š” ํ•˜์ดํผ๋ฐ”์ด์ € ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค)์˜ ์ž˜๋ชป๋œ ๋™์ž‘

  • ํ…Œ์ŠคํŠธ 1: ๋ฐฉํ™”๋ฒฝ ์„ค์ • ํ™•์ธ
  • ๊ฒฐ๊ณผ: ๋ฐฉํ™”๋ฒฝ์€ ํ˜ธ์ŠคํŠธ์™€ GCP ๋ชจ๋‘์—์„œ DNS ํŒจํ‚ท์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ 2: ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„๊ณ  DNS ์š”์ฒญ ์ „์†ก ๋ฐ ๋ฐ˜ํ™˜์˜ ์ •ํ™•์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: tcpdump๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฐ˜ํ™˜ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ–ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒฐ๋ก : ๋ฌธ์ œ๋Š” ๋„คํŠธ์›Œํฌ์— ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค

๊ฐ€์„ค: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ 1: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„ ๋กœ๊ทธ์—์„œ ์ด์ƒ ์ง•ํ›„ ํ™•์ธ
  • ๊ฒฐ๊ณผ: ๋กœ๊ทธ์— ์ด์ƒ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ 2: ๋‹ค์Œ์„ ํ†ตํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„ ์šฐํšŒ dig @8.8.8.8
  • ๊ฒฐ๊ณผ: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ํ•ด์ƒ๋„๊ฐ€ ๊นจ์ง‘๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฒฐ๋ก : ๋ฌธ์ œ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค

ํ•˜๋‹จ ๋ผ์ธ : ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์„ค์ •!

์ปค๋„ ๋Ÿฐํƒ€์ž„ ์„ค์ • ์‚ดํŽด๋ณด๊ธฐ

์ปค๋„ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋ช…๋ น์ค„ ์˜ต์…˜(grub) ๋˜๋Š” sysctl ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋“ค์—ฌ๋‹ค ๋ณด์•˜๋‹ค /etc/sysctl.conf ์ƒ๊ฐํ•ด ๋ณด๋ฉด ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์šฉ์ž ์ •์˜ ์„ค์ •์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ๋ถ™์žกํžŒ ๋“ฏํ•œ ๋Š๋‚Œ์ด ๋“ค์–ด์„œ ๋น„๋„คํŠธ์›Œํฌ๋‚˜ ๋น„tcp ์„ค์ •์„ ๋ชจ๋‘ ๋ฒ„๋ฆฌ๊ณ  ์‚ฐ ์„ค์ •๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. net.core. ๊ทธ๋Ÿฐ ๋‹ค์Œ VM์˜ ํ˜ธ์ŠคํŠธ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ณณ์œผ๋กœ ๊ฐ€์„œ ๋ฒ”์ธ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์†์ƒ๋œ VM์— ์„ค์ •์„ ํ•˜๋‚˜์”ฉ ์ ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

net.core.rmem_default = 2147483647

์—ฌ๊ธฐ DNS๋ฅผ ๊นจ๋Š” ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์‚ด์ธ๋ฌด๊ธฐ๋ฅผ ์ฐพ์•˜์–ด์š” ๊ทธ๋Ÿฐ๋ฐ ์™œ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ฑธ๊นŒ์š”? ์•„์ง ๋™๊ธฐ๊ฐ€ ํ•„์š”ํ–ˆ์–ด์š”.

๊ธฐ๋ณธ DNS ํŒจํ‚ท ๋ฒ„ํผ ํฌ๊ธฐ๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. net.core.rmem_default. ์ผ๋ฐ˜์ ์ธ ๊ฐ’์€ ์•ฝ 200KiB ์ •๋„์ด์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ ๋งŽ์€ DNS ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํŒจํ‚ท์„ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„์„œ ์ƒˆ ํŒจํ‚ท์ด ๋„์ฐฉํ–ˆ์„ ๋•Œ ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ํŒจํ‚ท์ด ์†์‹ค๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ณ ๊ฐ์€ DNS ํŒจํ‚ท์„ ํ†ตํ•ด ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋‘๋ ค์›Œ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฐ€ ์„ค์ •ํ•œ ๊ฐ’์€ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€๊ฐ’์ธ 231-1์ด์—ˆ์Šต๋‹ˆ๋‹ค(231๋กœ ์„ค์ •ํ•˜๋ฉด ์ปค๋„์€ "INVALID ARGUMENT"๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค).

๊ฐ‘์ž๊ธฐ ๋‚˜๋Š” ์™œ nmap๊ณผ scapy๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์›์‹œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค! ์›์‹œ ์†Œ์ผ“์€ ์ผ๋ฐ˜ ์†Œ์ผ“๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. iptable์„ ์šฐํšŒํ•˜๊ณ  ๋ฒ„ํผ๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

๊ทธ๋Ÿฐ๋ฐ "๋ฒ„ํผ๊ฐ€ ๋„ˆ๋ฌด ํผ"์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ์—ฌ๋Ÿฌ ์ปค๋„๊ณผ ์—ฌ๋Ÿฌ ๋ฐฐํฌํŒ์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด๋ฏธ 3.x ์ปค๋„์—์„œ ๋‚˜ํƒ€๋‚ฌ์œผ๋ฉฐ ์ด์ œ 5.x ์ปค๋„์—์„œ๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์‹œ์ž‘ํ•˜์ž๋งˆ์ž

sysctl -w net.core.rmem_default=$((2**31-1))

DNS ์ž‘๋™์ด ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์ด์ง„ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ž‘๋™ ๊ฐ’์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์‹œ์Šคํ…œ์ด 2147481343์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์ง€๋งŒ ์ด ์ˆซ์ž๋Š” ๋‚˜์—๊ฒŒ ์˜๋ฏธ ์—†๋Š” ์ˆซ์ž ์ง‘ํ•ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์—๊ฒŒ ์ด ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๋ผ๊ณ  ์ œ์•ˆํ–ˆ๊ณ  ์‹œ์Šคํ…œ์€ google.com์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ๋Š” ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋‹ตํ•˜์—ฌ ์กฐ์‚ฌ๋ฅผ ๊ณ„์†ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์„ค์น˜ํ–ˆ๋‹ค ๋“œ๋กญ์›Œ์น˜, ์ด์ „์— ์‚ฌ์šฉํ–ˆ์–ด์•ผ ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ์ปค๋„์—์„œ ํŒจํ‚ท์ด ๋๋‚˜๋Š” ์œ„์น˜๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฒ”์ธ์€ ํ•จ์ˆ˜์˜€๋‹ค udp_queue_rcv_skb. ์ปค๋„ ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ๋“ค printk ํŒจํ‚ท์ด ์ •ํ™•ํžˆ ์–ด๋””์—์„œ ๋๋‚˜๋Š”์ง€ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฑ ๋งž๋Š” ์กฐ๊ฑด์„ ๋นจ๋ฆฌ ์ฐพ์•˜์–ด์š” if, ๊ทธ๋ฆฌ๊ณ  ์ž ์‹œ ๋™์•ˆ ๊ทธ๊ฒƒ์„ ์ณ๋‹ค๋งŒ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋งˆ์นจ๋‚ด ์ „์ฒด ๊ทธ๋ฆผ์œผ๋กœ ํ•ฉ์ณ์กŒ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 231-1, ์˜๋ฏธ ์—†๋Š” ์ˆซ์ž, ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋„๋ฉ”์ธ... ๊ทธ๊ฒƒ์€ ์ฝ”๋“œ ์กฐ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. __udp_enqueue_schedule_skb:

if (rmem > (size + sk->sk_rcvbuf))
		goto uncharge_drop;

์ฐธ๊ณ  :

  • rmem int ์œ ํ˜•์ž…๋‹ˆ๋‹ค.
  • size u16(๋ถ€ํ˜ธ ์—†๋Š” XNUMX๋น„ํŠธ int) ์œ ํ˜•์ด๋ฉฐ ํŒจํ‚ท ํฌ๊ธฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • sk->sk_rcybuf int ์œ ํ˜•์ด๋ฉฐ ์ •์˜์— ๋”ฐ๋ผ ๋‹ค์Œ ๊ฐ’๊ณผ ๋™์ผํ•œ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. net.core.rmem_default

์–ธ์ œ sk_rcvbuf ์ ‘๊ทผ ๋ฐฉ์‹ 231์—์„œ ํŒจํ‚ท ํฌ๊ธฐ๋ฅผ ํ•ฉ์‚ฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ. ๊ทธ๋ฆฌ๊ณ  int์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๊ฐ’์€ ์Œ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์กฐ๊ฑด์ด false์—ฌ์•ผ ํ•  ๋•Œ ์กฐ๊ฑด์ด true๊ฐ€ ๋ฉ๋‹ˆ๋‹ค(์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋งํฌ).

์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. unsigned int. ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ DNS๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šน๋ฆฌ์˜ ๋ง›

๋‚ด๊ฐ€ ์กฐ์‚ฌํ•œ ๋‚ด์šฉ์„ ๊ณ ๊ฐ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. LKML ์ปค๋„ ํŒจ์น˜. ์ €๋Š” ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํผ์ฆ์˜ ๋ชจ๋“  ์กฐ๊ฐ์ด ์„œ๋กœ ๋งž์•„๋–จ์–ด์ง€๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๊ด€์ฐฐํ•œ ๊ฒƒ์„ ๊ด€์ฐฐํ•œ ์ด์œ ๋ฅผ ์ •ํ™•ํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ํŒ€์›Œํฌ ๋•๋ถ„์— ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ด ์‚ฌ๋ก€๊ฐ€ ๋“œ๋ฌธ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ๋‹ค๋Š” ์ ์€ ์ธ์‹ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ด๋Ÿฌํ•œ ๋ณต์žกํ•œ ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

Google Cloud ๊ธฐ์ˆ  ์ง€์›์—์„œ DNS ํŒจํ‚ท ๋ˆ„๋ฝ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ


์ถœ์ฒ˜ : habr.com

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