์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์ œ ์ด๋ฆ„์€ Dmitry Samsonov์ด๊ณ  Odnoklassniki์—์„œ ์ˆ˜์„ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 7๊ฐœ๊ฐ€ ๋„˜๋Š” ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„, ํด๋ผ์šฐ๋“œ์— 11๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ, 200๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์œผ๋กœ 700๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„๋Š” CentOS 7์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
14๋…„ 2018์›” XNUMX์ผ FragmentSmack ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
(CVE-2018-5391) ๋ฐ SegmentSmack(CVE-2018-5390). ์ด๋Š” ๋„คํŠธ์›Œํฌ ๊ณต๊ฒฉ ๋ฒกํ„ฐ์™€ ์ƒ๋‹นํžˆ ๋†’์€ ์ ์ˆ˜(7.5์ )๋ฅผ ์ง€๋‹Œ ์ทจ์•ฝ์ ์œผ๋กœ, ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ๋กœ ์ธํ•œ ์„œ๋น„์Šค ๊ฑฐ๋ถ€(DoS)๋ฅผ ์œ„ํ˜‘ํ•œ๋‹ค. FragmentSmack์— ๋Œ€ํ•œ ์ปค๋„ ์ˆ˜์ •์€ ๋‹น์‹œ ์ œ์•ˆ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋˜ํ•œ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๊ฒŒ์‹œ๋œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋Šฆ๊ฒŒ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. SegmentSmack์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์ปค๋„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ํŒจํ‚ค์ง€ ์ž์ฒด๋„ ๊ฐ™์€ ๋‚  ์ถœ์‹œ๋๊ณ , ๋‚จ์€ ๊ฑด ์„ค์น˜๋ฟ์ด์—ˆ๋‹ค.
์•„๋‹ˆ์š”, ์šฐ๋ฆฌ๋Š” ์ปค๋„ ์—…๋ฐ์ดํŠธ๋ฅผ ์ „ํ˜€ ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ๋‰˜์•™์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ...

ํ”„๋กœ๋•์…˜์—์„œ ์ปค๋„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณต์žกํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

  1. ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ;
  2. ์—ฌ๋Ÿฌ ์„œ๋ฒ„(ํด๋ผ์šฐ๋“œ ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„ ํฌํ•จ)์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ํŒŒ์†๋œ ๋ถ€๋ถ„์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  4. ๋ชจ๋“  ํ‘œ์ค€ ์ปค๋„ ์„ค์ •์ด ์˜ค๋ฅ˜ ์—†์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  5. ๋ฉฐ์น  ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.
  6. ์„œ๋ฒ„ ์„ฑ๋Šฅ์„ ํ™•์ธํ•˜์„ธ์š”.
  7. ์ƒˆ ์„œ๋ฒ„ ๋ฐฐํฌ๋ฅผ ์ƒˆ ์ปค๋„๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  8. ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ณ„๋กœ ๋ชจ๋“  ์„œ๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค(๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ).
  9. ๋ชจ๋“  ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปค๋„์˜ ๋ชจ๋“  ๋ถ„๊ธฐ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Stock CentOS 7 3.10 - ๋Œ€๋ถ€๋ถ„์˜ ์ผ๋ฐ˜ ์„œ๋ฒ„์šฉ;
  • ๋ฐ”๋‹๋ผ 4.19 - ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฒƒ ๋‹จ์ผ ํด๋ผ์šฐ๋“œ ๊ตฌ๋ฆ„, BFQ, BBR ๋“ฑ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • Elrepo kernel-ml 5.2 - ๊ณ ๋ถ€ํ•˜ ์œ ํ†ต์—…์ฒด, 4.19๋Š” ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ๋™์ž‘ํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

ํ•˜์ง€๋งŒ ์•„์ง ์ž‘์—…๋Ÿ‰์ด ๋งŽ์•„ ๋ช‡ ์ฃผ๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒˆ ๋ฒ„์ „์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ๋Œ€ ๋ช‡ ๋‹ฌ์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋“ค์€ ์ด๋ฅผ ๋งค์šฐ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ”Œ๋žœ B๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

FragmentSmack/SegmentSmack. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ผ๋ถ€ ์ทจ์•ฝ์ ์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๊ณ„ํš B๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์ด๋ฅผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋Š” ๊ฐ€๋Šฅํ•œ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜๊ฑฐ๋‚˜ ์ทจ์•ฝ์  ์•…์šฉ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„/์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์„ค์ •์˜ ๋ณ€๊ฒฝ์ž…๋‹ˆ๋‹ค.

FragmentSmack/SegmentSmack์˜ ๊ฒฝ์šฐ ์ œ์•ˆ๋˜์—ˆ๋‹ค ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

ยซnet.ipv4.ipfrag_high_thresh ๋ฐ net.ipv3.ipfrag_low_thresh(๋ฐ ipv4 net.ipv4.ipfrag_high_thresh ๋ฐ net.ipv6.ipfrag_low_thresh์— ๋Œ€ํ•œ ๋Œ€์‘ ํ•ญ๋ชฉ)์—์„œ 6MB ๋ฐ 6MB์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ๊ฐ 256kB ๋ฐ 192kB๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ฎ์ถ”๋‹ค. ํ…Œ์ŠคํŠธ์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด, ์„ค์ • ๋ฐ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ณต๊ฒฉ ์ค‘์— CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์†Œํญ ๊ฐ์†Œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๋ฒˆ์— 262144๊ฐœ์˜ 64K ์กฐ๊ฐ๋งŒ ๋ฆฌ์–ด์…ˆ๋ธ”๋ฆฌ ๋Œ€๊ธฐ์—ด์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ipfrag_high_thresh=XNUMX๋ฐ”์ดํŠธ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์— ์•ฝ๊ฐ„์˜ ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€๊ทœ๋ชจ UDP ํŒจํ‚ท์„ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๋‹จ๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.".

๋งค๊ฐœ๋ณ€์ˆ˜ ์ž์ฒด ์ปค๋„ ๋ฌธ์„œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค:

ipfrag_high_thresh - LONG INTEGER
    Maximum memory used to reassemble IP fragments.

ipfrag_low_thresh - LONG INTEGER
    Maximum memory used to reassemble IP fragments before the kernel
    begins to remove incomplete fragment queues to free up resources.
    The kernel still accepts new fragments for defragmentation.

ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค์—๋Š” ๋Œ€๊ทœ๋ชจ UDP๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. LAN์—๋Š” ์กฐ๊ฐํ™”๋œ ํŠธ๋ž˜ํ”ฝ์ด ์—†๊ณ  WAN์—๋Š” ์กฐ๊ฐํ™”๋œ ํŠธ๋ž˜ํ”ฝ์ด ์žˆ์ง€๋งŒ ์‹ฌ๊ฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ง•ํ›„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

FragmentSmack/SegmentSmack. ํผ์ŠคํŠธ ๋ธ”๋Ÿฌ๋“œ

์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ํด๋ผ์šฐ๋“œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒˆ๋กœ์šด ์„ค์ •์„ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๊ณ (ipfrag_low_thresh๋งŒ) ๋•Œ๋กœ๋Š” ์ „ํ˜€ ์ ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. (๋ชจ๋“  ์„ค์ •์€ ์–ด๋ ค์›€ ์—†์ด ์ˆ˜๋™์œผ๋กœ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.) ์‹œ์ž‘ ์‹œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋„ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ํ™•์‹คํ•œ ์ ์€ ์„ค์ •์„ ๋กค๋ฐฑํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ถฉ๋Œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ์— Sysctl์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž์ฒด ์ „์šฉ ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ์œผ๋ฏ€๋กœ ์ตœ์†Œํ•œ ๋„คํŠธ์›Œํฌ Sysctl ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ผ๋ถ€ ์ปจํ…Œ์ด๋„ˆ์˜ ํ˜ธ์ŠคํŠธ์™€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ์— Sysctl ์„ค์ •์ด ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋‚˜์š”? ์šฐ๋ฆฌ ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด์— ๋“ค์–ด๊ฐ€์„œ Sysctl ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๊ถŒํ•œ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹น์‹œ ์šฐ๋ฆฌ ํด๋ผ์šฐ๋“œ๋Š” Docker๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค(์ง€๊ธˆ์€ ํฌ๋“œ ๋งจ). ํ•„์š”ํ•œ Sysctl ์„ค์ •์„ ํฌํ•จํ•˜์—ฌ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ API๋ฅผ ํ†ตํ•ด Docker์— ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฒ„์ „์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋™์•ˆ Docker API๊ฐ€ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(์ ์–ด๋„ ๋ฒ„์ „ 1.10์—์„œ๋Š”). "docker run"์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์„ ๋•Œ ๋งˆ์นจ๋‚ด ์ตœ์†Œํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

write /proc/sys/net/ipv4/ipfrag_high_thresh: invalid argument docker: Error response from daemon: Cannot start container <...>: [9] System error: could not synchronise with container process.

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ? ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋”๋งŒ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Docker๋Š” Sysctl ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ ์šฉ๋˜๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค(์ตœ์‹  ํ…Œ์ŠคํŠธ ๋ฒ„์ „์€ 1.13.1). ๋”ฐ๋ผ์„œ ipfrag_low_thresh๊ฐ€ ์—ฌ์ „ํžˆ 256M์ผ ๋•Œ ipfrag_high_thresh๋ฅผ 3K๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒํ•œ์ด ๋” ๋‚ฎ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜ํ•œ๊ฐ’๋ณด๋‹ค ๋†’์•„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹น์‹œ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์‹œ์ž‘ ํ›„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ž์ฒด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน ๋ƒ‰๋™๊ณ  ๋‹ค์Œ์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. IP ๋„คํŠธ์›Œํฌ), ๊ทธ๋ฆฌ๊ณ  ์ด ๋ถ€๋ถ„์— Sysctl ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž‘์„ฑ๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

FragmentSmack/SegmentSmack. ํผ์ŠคํŠธ ๋ธ”๋Ÿฌ๋“œ 2

ํด๋ผ์šฐ๋“œ์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์˜ ์‚ฌ์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ฒ˜์Œ์œผ๋กœ ๋“œ๋ฌธ ๋ถˆ๋งŒ์ด ์ ‘์ˆ˜๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ์ฒซ ๋ฒˆ์งธ ์„œ๋ฒ„์—์„œ Workaround๋ฅผ ์‚ฌ์šฉํ•œ ์ง€ ๋ช‡ ์ฃผ๊ฐ€ ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์กฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด ๋ถˆ๋งŒ์‚ฌํ•ญ์€ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๊ฐœ๋ณ„ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ ‘์ˆ˜๋œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‹ค์‹œ ๊ทน๋„๋กœ ๋ถˆํ™•์‹คํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์šฐ์„ , ๋ฌผ๋ก  Sysctl ์„ค์ •์„ ๋กค๋ฐฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์กฐ์ž‘๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์žฌ๋ถ€ํŒ…์ด ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜๋Š” ๊ฒƒ์€ ์˜ˆ์ „ Windows์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉฐ Sysctl์— ์ƒˆ ์„ค์ •์„ ์ ์šฉํ•  ๋•Œ ์ด๋ฅผ "์ปค๋„ ๊ฒฐํ•จ"์œผ๋กœ ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ํ™ฉ๋‹นํ•œ ์ผ์ด์—ˆ๋Š”์ง€...

504์ฃผ ํ›„์— ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋ฒ„์˜ ๊ตฌ์„ฑ์€ ๋งค์šฐ ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ/๋ฐธ๋Ÿฐ์„œ ๋ชจ๋“œ์˜ Nginx์ž…๋‹ˆ๋‹ค. ๊ตํ†ต๋Ÿ‰์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์†Œ๊ฐœ ์ฐธ๊ณ  ์‚ฌํ•ญ: ํด๋ผ์ด์–ธํŠธ์˜ XNUMX ์˜ค๋ฅ˜ ์ˆ˜๊ฐ€ ๋งค์ผ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๊ฒŒ์ดํŠธ์›จ์ด ์‹œ๊ฐ„ ์ดˆ๊ณผ). ๊ทธ๋ž˜ํ”„๋Š” ์ด ์„œ๋น„์Šค์˜ ์ผ์ผ 504๊ฐœ ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

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

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

์ด๋Š” ์šด์˜ ์ฒด์ œ ๊ทธ๋ž˜ํ”„์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ€์žฅ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ์—์„œ๋Š” ๋™์‹œ์— QoS(Traffic Control) ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ๋˜ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ท ์กฐ๊ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ์ •ํ™•ํžˆ ๋™์ผํ•ด ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

๊ฐ€์ •์€ ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„์—์„œ ๋™์ผํ•˜๊ฒŒ ๋ณด์ด๋ฉด ์ด์œ ๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ๋œ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ QoS์—์„œ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ fq ํŒจํ‚ท ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด 100๊ฐœ์˜ ํŒจํ‚ท์„ ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฑ„๋„ ๋ถ€์กฑ ์ƒํ™ฉ์—์„œ ์ผ๋ถ€ ์—ฐ๊ฒฐ๋กœ ์ธํ•ด ๋Œ€๊ธฐ์—ด์ด ์šฉ๋Ÿ‰์œผ๋กœ ๋ง‰ํžˆ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํŒจํ‚ท์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. tc ํ†ต๊ณ„(tc -s qdisc)์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

qdisc fq 2c6c: parent 1:2c6c limit 10000p flow_limit 100p buckets 1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
 Sent 454701676345 bytes 491683359 pkt (dropped 464545, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
  1024 flows (1021 inactive, 0 throttled)
  0 gc, 0 highprio, 0 throttled, 464545 flows_plimit

โ€œ464545 flow_plimitโ€์€ ํ•œ ์—ฐ๊ฒฐ์˜ ๋Œ€๊ธฐ์—ด ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์—ฌ ์‚ญ์ œ๋œ ํŒจํ‚ท ์ˆ˜์ด๊ณ , โ€œdropped 464545โ€๋Š” ์ด ์Šค์ผ€์ค„๋Ÿฌ์˜ ๋ชจ๋“  ์‚ญ์ œ๋œ ํŒจํ‚ท์˜ ํ•ฉ๊ณ„์ž…๋‹ˆ๋‹ค. ๋Œ€๊ธฐ์—ด ๊ธธ์ด๋ฅผ 1์œผ๋กœ ๋Š˜๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ๋ฌธ์ œ ๋ฐœ์ƒ์ด ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŽธ์•ˆํ•˜๊ฒŒ ์•‰์•„์„œ ์Šค๋ฌด๋””๋ฅผ ๋งˆ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FragmentSmack/SegmentSmack. ๋ผ์ŠคํŠธ ๋ธ”๋Ÿฌ๋“œ

์ฒซ์งธ, ์ปค๋„์˜ ์ทจ์•ฝ์ ์ด ๋ฐœํ‘œ๋œ ์ง€ ๋ช‡ ๋‹ฌ ํ›„ ๋งˆ์นจ๋‚ด FragmentSmack์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(7.5์›” ๋ฐœํ‘œ์™€ ํ•จ๊ป˜ SegmentSmack์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ๋งŒ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Œ์„ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค). ์ด๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ํฌ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ผ๋ถ€ ์„œ๋ฒ„๋ฅผ ์ƒˆ ์ปค๋„๋กœ ์ด์ „ํ–ˆ์œผ๋ฉฐ ์ด์ œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. FragmentSmack ์ˆ˜์ •์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ปค๋„์„ ์—…๋ฐ์ดํŠธํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” CentOS ์ž์ฒด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค(์ปค๋„๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ)์™€ ์ผ์น˜(๋ฐ ๋ณ‘ํ•ฉ)๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ SegmentSmack์€ ๋” ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์ ์ด๊ณ  ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ๋‚˜ํƒ€๋‚ฌ์œผ๋ฏ€๋กœ ์–ด์จŒ๋“  ์˜๋ฏธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ CentOS 7.6์—์„œ ๋‚˜ํƒ€๋‚ฌ๋˜ FragmentSmack ์ทจ์•ฝ์ ์ด ๋ฒ„์ „ 7.5์—์„œ๋งŒ ์ˆ˜์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— CentOS์—์„œ ๋‹จ์ˆœํžˆ ์ปค๋„์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜๋Š” ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 7.6๋กœ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  XNUMX์œผ๋กœ์˜ ์—…๋ฐ์ดํŠธ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ผ๋„ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

๋‘˜์งธ, ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ๋ถˆ๋งŒ์ด ๋“œ๋ฌผ๊ฒŒ ์ ‘์ˆ˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ผ๋ถ€ ์„œ๋ฒ„๋กœ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”์šฑ์ด ์ „์ฒด ์งˆ๋Ÿ‰ ์ค‘ ์•„์ฃผ ์ ์€ ์ˆ˜์˜ ์—…๋กœ๋“œ๊ฐ€ ์ด๋Ÿฌํ•œ ์„œ๋ฒ„๋ฅผ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์ด์•ผ๊ธฐ์—์„œ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Sysctl์„ ๋กค๋ฐฑํ•˜๋Š” ๊ฒƒ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์žฌ๋ถ€ํŒ…์ด ๋„์›€์ด ๋˜์—ˆ์ง€๋งŒ ์ผ์‹œ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
Sysctl์— ๋Œ€ํ•œ ์˜ํ˜น์€ ํ•ด์†Œ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์—ฐ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์—…๋กœ๋“œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋Šฅ๋ ฅ์ด ํฌ๊ฒŒ ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํ†ต๊ณ„์™€ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•ด๋„ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋” ์ด์ƒ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์—ฐ๊ด€์„ฑ์„ '๋Š๋ผ๊ธฐ' ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐœ๋ฐœ์ž๋Š” ํŠน์ˆ˜ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Wi-Fi๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ํ…Œ์ŠคํŠธ ์žฅ์น˜์—์„œ ๋ฌธ์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์กฐ์‚ฌ์˜ ํš๊ธฐ์ ์ธ ์‚ฌ๊ฑด์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์šฐ๋ฆฌ์˜ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ ๋ฐฑ์—”๋“œ๋กœ ํ”„๋ก์‹œ๋˜๋Š” Nginx์— ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

๋ฌธ์ œ์— ๋Œ€ํ•œ ๋Œ€ํ™”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(Nginx ํ”„๋ก์‹œ ์ธก์—์„œ ์ˆ˜์ •๋จ).

  1. ํด๋ผ์ด์–ธํŠธ: ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  2. ์ž๋ฐ” ์„œ๋ฒ„: ์‘๋‹ต.
  3. ํด๋ผ์ด์–ธํŠธ: ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ POST.
  4. ์ž๋ฐ” ์„œ๋ฒ„: ์˜ค๋ฅ˜.

๋™์‹œ์— Java ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ 0๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ–ˆ๋‹ค๊ณ  ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๊ณ  Nginx ํ”„๋ก์‹œ๋Š” ์š”์ฒญ์— 30์ดˆ ์ด์ƒ ๊ฑธ๋ ธ๋‹ค๊ณ  ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค(30์ดˆ๋Š” ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ์ž„). ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ด์œ ์™€ 0๋ฐ”์ดํŠธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? HTTP ๊ด€์ ์—์„œ ๋ณด๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ํŒŒ์ผ์ด ํฌํ•จ๋œ POST๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ Nginx ์‚ฌ์ด์—์„œ๋Š” ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด์ œ Tcpdump๋กœ ๋ฌด์žฅํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ๋จผ์ € ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Nginx ํ”„๋ก์‹œ๋Š” L3 ๋ฐธ๋Ÿฐ์„œ ๋’ค์— ์žˆ์Šต๋‹ˆ๋‹ค. NF์›จ์–ด. ํ„ฐ๋„๋ง์€ L3 ๋ฐธ๋Ÿฐ์„œ์—์„œ ์„œ๋ฒ„๋กœ ํŒจํ‚ท์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์„œ๋ฒ„๋Š” ํŒจํ‚ท์— ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

์ด ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ๋Š” Vlan ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํŠธ๋ž˜ํ”ฝ์˜ ํ˜•ํƒœ๋กœ ์ด ์„œ๋ฒ„์— ์ œ๊ณต๋˜๋ฉฐ ํŒจํ‚ท์— ์ž์ฒด ํ•„๋“œ๋„ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

๊ทธ๋ฆฌ๊ณ  ์ด ํŠธ๋ž˜ํ”ฝ์€ ์กฐ๊ฐํ™”๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์˜ ์œ„ํ—˜์„ ํ‰๊ฐ€ํ•  ๋•Œ ์ด์•ผ๊ธฐํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ž‘์€ ๋น„์œจ์˜ ์กฐ๊ฐํ™”๋œ ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ). ์ด๋กœ ์ธํ•ด ํ—ค๋”์˜ ๋‚ด์šฉ๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋ผ์šด๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ทจ์•ฝ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. 1๋ถ€: FragmentSmack/SegmentSmack

๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ์ง€๋งŒ, ํŒจํ‚ท์€ Vlan ํƒœ๊ทธ๋กœ ์บก์Šํ™”๋˜๊ณ , ํ„ฐ๋„๋กœ ์บก์Šํ™”๋˜๊ณ , ์กฐ๊ฐํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์—์„œ Nginx ํ”„๋ก์‹œ๊นŒ์ง€์˜ ํŒจํ‚ท ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํŒจํ‚ท์ด L3 ๋ฐธ๋Ÿฐ์„œ์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋‚ด์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๋ผ์šฐํŒ…์„ ์œ„ํ•ด ํŒจํ‚ท์€ ํ„ฐ๋„์— ์บก์Šํ™”๋˜์–ด ๋„คํŠธ์›Œํฌ ์นด๋“œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  2. ํŒจํ‚ท + ํ„ฐ๋„ ํ—ค๋”๊ฐ€ MTU์— ๋งž์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ท์„ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ผ์„œ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  3. L3 ๋ฐธ๋Ÿฐ์„œ ๋’ค์˜ ์Šค์œ„์น˜๋Š” ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๋ฉด Vlan ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  4. Nginx ํ”„๋ก์‹œ ์•ž์˜ ์Šค์œ„์น˜๋Š” ํฌํŠธ ์„ค์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋ฒ„๊ฐ€ Vlan ์บก์Šํ™” ํŒจํ‚ท์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•˜๋ฏ€๋กœ Vlan ํƒœ๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  5. Linux๋Š” ๊ฐœ๋ณ„ ํŒจํ‚ค์ง€ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์™€ ํ•˜๋‚˜์˜ ํฐ ํŒจํ‚ค์ง€๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  6. ๋‹ค์Œ์œผ๋กœ ํŒจํ‚ท์€ Vlan ์ธํ„ฐํŽ˜์ด์Šค์— ๋„๋‹ฌํ•˜๋ฉฐ ์—ฌ๊ธฐ์„œ ์ฒซ ๋ฒˆ์งธ ๊ณ„์ธต(Vlan ์บก์Šํ™”)์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
  7. ๊ทธ๋Ÿฐ ๋‹ค์Œ Linux๋Š” ์ด๋ฅผ Tunnel ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฅธ ๋ ˆ์ด์–ด๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค(Tunnel encapsulation).

์–ด๋ ค์šด ์ ์€ ์ด ๋ชจ๋“  ๊ฒƒ์„ tcpdump์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ VLAN ๋ฐ ํ„ฐ๋„ ์บก์Šํ™”๊ฐ€ ์ œ๊ฑฐ๋œ ๊นจ๋—ํ•œ(๋ถˆํ•„์š”ํ•œ ํ—ค๋” ์—†์ด) IP ํŒจํ‚ท์ด ์žˆ์Šต๋‹ˆ๊นŒ?

tcpdump host <ip ะบะปะธะตะฝั‚ะฐ>

์•„๋‹ˆ์š”, ์„œ๋ฒ„์—๋Š” ๊ทธ๋Ÿฌํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋Š” ๋” ์ผ์ฐ ๋ฐœ์ƒํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Vlan ์บก์Šํ™”๋งŒ ์ œ๊ฑฐ๋œ ํŒจํ‚ท์ด ์žˆ์Šต๋‹ˆ๊นŒ?

tcpdump ip[32:4]=0xx390x2xx

0xx390x2xx๋Š” XNUMX์ง„์ˆ˜ ํ˜•์‹์˜ ํด๋ผ์ด์–ธํŠธ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
32:4 - SCR IP๊ฐ€ ํ„ฐ๋„ ํŒจํ‚ท์— ๊ธฐ๋ก๋˜๋Š” ํ•„๋“œ์˜ ์ฃผ์†Œ ๋ฐ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท์—์„œ๋Š” ์•ฝ 40, 44, 50, 54๋ฅผ ์ผ์ง€๋งŒ ๊ฑฐ๊ธฐ์—๋Š” IP ์ฃผ์†Œ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„๋“œ ์ฃผ์†Œ๋Š” ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…์œผ๋กœ ์„ ํƒํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ XNUMX์ง„์ˆ˜๋กœ ๋œ ํŒจํ‚ท ์ค‘ ํ•˜๋‚˜(tcpdump์˜ -xx ๋˜๋Š” -XX ๋งค๊ฐœ๋ณ€์ˆ˜)๋ฅผ ๋ณด๊ณ  ์•Œ๊ณ  ์žˆ๋Š” IP ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

VLAN ๋ฐ ํ„ฐ๋„ ์บก์Šํ™”๊ฐ€ ์ œ๊ฑฐ๋˜์ง€ ์•Š์€ ํŒจํ‚ท ์กฐ๊ฐ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

tcpdump ((ip[6:2] > 0) and (not ip[6] = 64))

์ด ๋งˆ๋ฒ•์€ ๋งˆ์ง€๋ง‰ ์กฐ๊ฐ์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์กฐ๊ฐ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์•„๋งˆ IP๋กœ๋„ ๋˜‘๊ฐ™์€ ๊ฑธ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๋Ÿฐ ํŒจํ‚ท์ด ๋ณ„๋กœ ์—†๊ณ , ํ•„์š”ํ•œ ํŒจํ‚ท์€ ์ผ๋ฐ˜ ํ๋ฆ„์—์„œ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค:

14:02:58.471063 In 00:de:ff:1a:94:11 ethertype IPv4 (0x0800), length 1516: (tos 0x0, ttl 63, id 53652, offset 0, flags [+], proto IPIP (4), length 1500)
    11.11.11.11 > 22.22.22.22: truncated-ip - 20 bytes missing! (tos 0x0, ttl 50, id 57750, offset 0, flags [DF], proto TCP (6), length 1500)
    33.33.33.33.33333 > 44.44.44.44.80: Flags [.], seq 0:1448, ack 1, win 343, options [nop,nop,TS val 11660691 ecr 2998165860], length 1448
        0x0000: 0000 0001 0006 00de fb1a 9441 0000 0800 ...........A....
        0x0010: 4500 05dc d194 2000 3f09 d5fb 0a66 387d E.......?....f8}
        0x0020: 1x67 7899 4500 06xx e198 4000 3206 6xx4 [email protected].
        0x0030: b291 x9xx x345 2541 83b9 0050 9740 0x04 .......A...P.@..
        0x0040: 6444 4939 8010 0257 8c3c 0000 0101 080x dDI9...W.......
        0x0050: 00b1 ed93 b2b4 6964 xxd8 ffe1 006a 4578 ......ad.....jEx
        0x0060: 6966 0000 4x4d 002a 0500 0008 0004 0100 if..MM.*........

14:02:58.471103 In 00:de:ff:1a:94:11 ethertype IPv4 (0x0800), length 62: (tos 0x0, ttl 63, id 53652, offset 1480, flags [none], proto IPIP (4), length 40)
    11.11.11.11 > 22.22.22.22: ip-proto-4
        0x0000: 0000 0001 0006 00de fb1a 9441 0000 0800 ...........A....
        0x0010: 4500 0028 d194 00b9 3f04 faf6 2x76 385x E..(....?....f8}
        0x0020: 1x76 6545 xxxx 1x11 2d2c 0c21 8016 8e43 .faE...D-,.!...C
        0x0030: x978 e91d x9b0 d608 0000 0000 0000 7c31 .x............|Q
        0x0040: 881d c4b6 0000 0000 0000 0000 0000 ..............

์ด๋Š” ์‚ฌ์ง„(์ฒซ ๋ฒˆ์งธ ํŒจํ‚ค์ง€์— Exif๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํ‘œ์‹œ๋จ)์ด ํฌํ•จ๋œ ํ•œ ํŒจํ‚ค์ง€(๋™์ผ ID 53652)์˜ ๋‘ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค. ์ด ์ˆ˜์ค€์—๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๋คํ”„์— ๋ณ‘ํ•ฉ๋œ ํ˜•์‹์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋Š” ๋ถ„๋ช…ํžˆ ์–ด์…ˆ๋ธ”๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด์— ๋Œ€ํ•œ ๊ธฐ๋ก์ ์ธ ์ฆ๊ฑฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!

ํŒจํ‚ท ๋””์ฝ”๋”๋Š” ๋นŒ๋“œ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ์–ด๋–ค ๋ฌธ์ œ๋„ ๋“œ๋Ÿฌ๋‚ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. hpd.gasmi.net. ์ฒ˜์Œ์— ๊ฑฐ๊ธฐ์— ๋ญ”๊ฐ€๋ฅผ ๋„ฃ์œผ๋ ค๊ณ  ํ•˜๋ฉด ๋””์ฝ”๋”๊ฐ€ ํŒจํ‚ท ํ˜•์‹์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Srcmac๊ณผ Ethertype ์‚ฌ์ด์— ์ถ”๊ฐ€๋กœ XNUMX๊ฐœ์˜ ์˜ฅํ…Ÿ์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(์กฐ๊ฐ ์ •๋ณด์™€ ๊ด€๋ จ ์—†์Œ). ์ œ๊ฑฐํ•œ ํ›„ ๋””์ฝ”๋”๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋ญ๋ผ๊ณ  ๋งํ•˜๋“  Sysctl ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฒƒ์€ ๊ทœ๋ชจ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ถ”๊ฐ€ ์กฐ์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ ์„œ๋ฒ„๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์นด์šดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋นจ๋ฆฌ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

netstat -s | grep "packet reassembles failedโ€

๋˜ํ•œ OID=1.3.6.1.2.1.4.31.1.1.16.1 ์•„๋ž˜์˜ snmpd์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค(ipSystemStatsReasm์‹คํŒจ).

"IP ์žฌ์กฐ๋ฆฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๊ฐ์ง€๋œ ์˜ค๋ฅ˜ ์ˆ˜(์ด์œ ๊ฐ€ ๋ฌด์—‡์ด๋“ : ์‹œ๊ฐ„ ์ดˆ๊ณผ, ์˜ค๋ฅ˜ ๋“ฑ)."

๋ฌธ์ œ๊ฐ€ ์—ฐ๊ตฌ๋œ ์„œ๋ฒ„ ๊ทธ๋ฃน ์ค‘์—์„œ ์ด ์นด์šดํ„ฐ๋Š” ๋‘ ๊ฐœ์—์„œ๋Š” ๋” ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ–ˆ๊ณ , ๋‘ ๊ฐœ๋Š” ๋” ๋Š๋ฆฌ๊ฒŒ ์ฆ๊ฐ€ํ–ˆ์œผ๋ฉฐ, ๋‘ ๊ฐœ ์ด์ƒ์—์„œ๋Š” ์ „ํ˜€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ์นด์šดํ„ฐ์˜ ์—ญํ•™์„ Java ์„œ๋ฒ„์˜ HTTP ์˜ค๋ฅ˜ ์—ญํ•™๊ณผ ๋น„๊ตํ•˜๋ฉด ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฏธํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ์กฐ๊ฐํ™” ์„ค์ •์„ ๋กค๋ฐฑํ–ˆ์œผ๋ฉฐ ์–ด๋”˜๊ฐ€์—์„œ ์ด์ „ ๊ธฐ๋ณธ๊ฐ’๋ณด๋‹ค ์กฐ๊ฐ์— ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค(์ด๊ฒƒ์€ UDP ํ†ต๊ณ„์˜€์œผ๋ฉฐ ๋ถ€๋ถ„ ์†์‹ค์€ ์ผ๋ฐ˜ ๋ฐฐ๊ฒฝ์—์„œ ๋ˆˆ์— ๋„์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค) .

๊ฐ€์žฅ ์ค‘์š”ํ•œ ์งˆ๋ฌธ

L3 ๋ฐธ๋Ÿฐ์„œ์—์„œ ํŒจํ‚ท์ด ์กฐ๊ฐํ™”๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐธ๋Ÿฐ์„œ๋กœ ๋„์ฐฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ‚ท์€ SYN ๋ฐ ACK์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€์˜ ํฌ๊ธฐ๋Š” ์ž‘์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํŒจํ‚ท์˜ ์ ์œ ์œจ์€ ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ๊ฒฝ์— ๋น„ํ•ด ์กฐ๊ฐํ™”๋˜๊ธฐ ์‹œ์ž‘ํ•œ ํฐ ํŒจํ‚ท์˜ ์กด์žฌ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๊ตฌ์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊นจ์กŒ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. advmss Vlan ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„์—์„œ(๋‹น์‹œ ํ”„๋กœ๋•์…˜์—์„œ๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํŠธ๋ž˜ํ”ฝ์ด ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค). Advmss๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์šฐ๋ฆฌ ๋ฐฉํ–ฅ์˜ ํŒจํ‚ท ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์•ผ ํ„ฐ๋„ ํ—ค๋”๋ฅผ ์—ฐ๊ฒฐํ•œ ํ›„ ์กฐ๊ฐํ™”๋  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Sysctl ๋กค๋ฐฑ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์žฌ๋ถ€ํŒ…์€ ์™œ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”? Sysctl์„ ๋กค๋ฐฑํ•˜๋ฉด ํŒจํ‚ค์ง€ ๋ณ‘ํ•ฉ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์—, ํ”„๋ž˜๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ๋กœ ์ธํ•ด ์—ฐ๊ฒฐ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ณ  ํ์—์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ์ง€์—ฐ๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์•˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์žฌ๋ถ€ํŒ…ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ง€์›Œ์ง€๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ฃผ๋ฌธ๋Œ€๋กœ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์—†์ด๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ, ํ•˜์ง€๋งŒ ๊ณต๊ฒฉ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๊ฒŒ ๋  ์œ„ํ—˜์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  Workaround๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋Š๋ ค์ง€๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ์กฐ์น˜๊ฐ€ ์ •๋‹นํ–ˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

Andrey Timofeev์—๊ฒŒ ๋งŽ์€ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค(์•„ํ‹ฐ๋ชจํŽ˜์˜ˆํ”„) ์กฐ์‚ฌ ์ˆ˜ํ–‰์— ๋„์›€์„ ์ฃผ์‹  Alexey Krenev (์žฅ์น˜x) - ์„œ๋ฒ„์—์„œ Centos ๋ฐ ์ปค๋„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์—„์ฒญ๋‚œ ์ž‘์—…์„ ์œ„ํ•ด. ์ด ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ง€์—ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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