์ฐจ๋‹จ์„ ์šฐํšŒํ•˜๋„๋ก BGP ์„ค์ • ๋˜๋Š” "๋‘๋ ค์›€์„ ๋ฉˆ์ถ”๊ณ  RKN๊ณผ ์‚ฌ๋ž‘์— ๋น ์ง„ ๋ฐฉ๋ฒ•"

๊ธ€์Ž„, "์‚ฌ๋ž‘์— ๋น ์กŒ๋‹ค"๋Š” ๋ง์€ ๊ณผ์žฅ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค "๊ณต์กดํ•  ์ˆ˜ ์žˆ๋‹ค".

์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ ์•„์‹œ๋‹ค์‹œํ”ผ, 16๋…„ 2018์›” 10์ผ๋ถ€ํ„ฐ Roskomnadzor๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์˜ ํ†ตํ•ฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ์ธํ„ฐ๋„ท ์‚ฌ์ดํŠธ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ ๋ฐ ๋‹ค์Œ์„ ํ—ˆ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ฐจ๋‹จํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋Ÿฌ์‹œ์•„ ์—ฐ๋ฐฉ์—์„œ ์œ ํฌ๊ฐ€ ๊ธˆ์ง€๋œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์ธํ„ฐ๋„ท ์‚ฌ์ดํŠธ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค."(ํ…์ŠคํŠธ์—์„œ - ๋“ฑ๋ก๋งŒ) /XNUMX ๋•Œ๋•Œ๋กœ. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋Ÿฌ์‹œ์•„ ์‹œ๋ฏผ๊ณผ ๊ธฐ์—…์€ ํ•„์š”ํ•œ ์™„์ „ํ•œ ๋ฒ•์  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ๊ถŒ์„ ์ƒ์‹คํ•˜์—ฌ ๊ณ ํ†ต์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฑ…์ž„ ๋ถ€์ธ

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

๋˜ํ•œ ์ €๋Š” ์ฃผ๋กœ ์ง์—…, ์ง์—…, ์ƒํ™œ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋„คํŠธ์›Œํฌ ์„ค๊ณ„์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ Linux๋Š” ์ €์˜ ๊ฐ•์ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌผ๋ก  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋” ์ž˜ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  VPS์˜ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๋” ๊นŠ์ด ์žˆ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ œ์•ˆ์ด ์ถฉ๋ถ„ํžˆ ์ž์„ธํ•˜๋‹ค๋ฉด ๊ฐ์‚ฌ์˜ ๋งˆ์Œ์œผ๋กœ ๋ฐ›์•„๋“ค์—ฌ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ ํ…์ŠคํŠธ์— ํ•ด๋‹น ์ œ์•ˆ์„ ์ถ”๊ฐ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

TL; DR

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

์ด๋ฅผ ์œ„ํ•ด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๋ถˆํ–‰ํžˆ๋„ ์ด ๊ฒŒ์‹œ๋ฌผ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์š”์†Œ๋ฅผ ์กฐํ•ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ฐจ๋‹จ ํ•„๋“œ ์™ธ๋ถ€ ์–ด๋”˜๊ฐ€์— Linux ์„œ๋ฒ„๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์ ์–ด๋„ ๊ทธ๋Ÿฌํ•œ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋Š” ์š•๊ตฌ - ํ˜„์žฌ ๋น„์šฉ์€ ์—ฐ๊ฐ„ $ 9์ด๋ฉฐ ์•„๋งˆ๋„ ๊ทธ ์ดํ•˜์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ณ„๋„์˜ VPN ํ„ฐ๋„์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์ ํ•ฉํ•˜๋ฉฐ, ๊ทธ๋Ÿฌ๋ฉด ์„œ๋ฒ„๊ฐ€ ์ฐจ๋‹จ ํ•„๋“œ ๋‚ด๋ถ€์— ์œ„์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ผ์šฐํ„ฐ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๋˜‘๋˜‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์›ํ•˜๋Š” ๋ชจ๋“  VPN ํด๋ผ์ด์–ธํŠธ(์ €๋Š” OpenVPN์„ ์„ ํ˜ธํ•˜์ง€๋งŒ PPTP, L2TP, GRE+IPSec ๋ฐ ํ„ฐ๋„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐํƒ€ ์˜ต์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)
    • BGPv4 ํ”„๋กœํ† ์ฝœ. ์ด๋Š” SOHO์˜ ๊ฒฝ์šฐ Mikrotik ๋˜๋Š” Quagga ๋˜๋Š” Bird๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” OpenWRT/LEDE/์œ ์‚ฌํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํŽŒ์›จ์–ด๊ฐ€ ์žˆ๋Š” ๋ผ์šฐํ„ฐ์ผ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. PC ๋ผ์šฐํ„ฐ ์‚ฌ์šฉ๋„ ๊ธˆ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์—…์˜ ๊ฒฝ์šฐ BGP ์ง€์›์— ๋Œ€ํ•ด์„œ๋Š” ๊ฒฝ๊ณ„ ๋ผ์šฐํ„ฐ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  3. BGP๋ฅผ ํฌํ•จํ•œ Linux ์‚ฌ์šฉ ๋ฐ ๋„คํŠธ์›Œํฌ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ ์–ด๋„ ๊ทธ ์•„์ด๋””์–ด๋ฅผ ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ทธ ๊ด‘๋Œ€ํ•จ์„ ๋ฐ›์•„๋“ค์ผ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹น์‹ ์ด ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ์Šค์Šค๋กœ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌผ๋ก  ๊ตฌ์ฒด์ ์ธ ์งˆ๋ฌธ์€ ๋Œ“๊ธ€๋กœ ๋‹ต๋ณ€ํ•ด๋“œ๋ฆด ์˜ˆ์ •์ด๋ฉฐ, ์ € ํ˜ผ์ž๋งŒ ๋‹ต๋ณ€์„ ๋“œ๋ฆด ๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ์œผ๋‹ˆ ํŽธํ•˜๊ฒŒ ์งˆ๋ฌธํ•ด ์ฃผ์„ธ์š”.

์˜ˆ์ œ์— ์‚ฌ์šฉ๋œ ๋‚ด์šฉ

  • ๋“ฑ๋ก๋ถ€ ์‚ฌ๋ณธ https://github.com/zapret-info/z-i 
  • VPS-์šฐ๋ถ„ํˆฌ 16.04
  • ๋ผ์šฐํŒ… ์„œ๋น„์Šค - ์ƒˆ 1.6.3   
  • ๋ผ์šฐํ„ฐ - ๋ฏธํฌ๋กœํ‹ฑ ํ–… ac
  • ์ž‘์—… ํด๋” - ๋ฃจํŠธ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์€ ๋ฃจํŠธ ํ™ˆ ํด๋”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ธฐ:
    • /root/blacklist - ์ปดํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋Š” ์ž‘์—… ํด๋”
    • /root/zi - github์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ณต์‚ฌ๋ณธ
    • /etc/bird - ํ‘œ์ค€ ์กฐ๋ฅ˜ ์„œ๋น„์Šค ์„ค์ • ํด๋”
  • ๋ผ์šฐํŒ… ์„œ๋ฒ„ ๋ฐ ํ„ฐ๋„ ์ข…๋ฃŒ ์ง€์ ์ด ์žˆ๋Š” VPS์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ๋กœ 194.165.22.146, ASN 64998์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ - 81.177.103.94, ASN 64999
  • ํ„ฐ๋„ ๋‚ด๋ถ€์˜ IP ์ฃผ์†Œ๋Š” ๊ฐ๊ฐ 172.30.1.1 ๋ฐ 172.30.1.2์ž…๋‹ˆ๋‹ค.

์ฐจ๋‹จ์„ ์šฐํšŒํ•˜๋„๋ก BGP ์„ค์ • ๋˜๋Š” "๋‘๋ ค์›€์„ ๋ฉˆ์ถ”๊ณ  RKN๊ณผ ์‚ฌ๋ž‘์— ๋น ์ง„ ๋ฐฉ๋ฒ•"

๋ฌผ๋ก  ๋‹ค๋ฅธ ๋ผ์šฐํ„ฐ, ์šด์˜ ์ฒด์ œ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋…ผ๋ฆฌ์— ๋งž๊ฒŒ ์†”๋ฃจ์…˜์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ - ์†”๋ฃจ์…˜์˜ ๋…ผ๋ฆฌ

  1. ์ค€๋น„ ์กฐ์น˜
    1. VPS ๋ฐ›๊ธฐ
    2. ๋ผ์šฐํ„ฐ์—์„œ VPS๊นŒ์ง€ ํ„ฐ๋„์„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
  2. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‚ฌ๋ณธ ํ™•๋ณด ๋ฐ ์ •๊ธฐ์  ์—…๋ฐ์ดํŠธ
  3. ๋ผ์šฐํŒ… ์„œ๋น„์Šค ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
  4. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ… ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ณ ์ • ๊ฒฝ๋กœ ๋ชฉ๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  5. ๋ผ์šฐํ„ฐ๋ฅผ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ํ„ฐ๋„์„ ํ†ตํ•ด ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ์ •

์ค€๋น„ ์กฐ์น˜

๋ฐฉ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ์—๋Š” ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ธ ๋น„์šฉ์œผ๋กœ VPS๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋งŽ์€ ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ 9๋‹ฌ๋Ÿฌ/๋…„ ์˜ต์…˜์„ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๊ตณ์ด ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋”๋ผ๋„ ๊ตฌ์„๊ตฌ์„ 1E/์›” ์˜ต์…˜์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. VPS๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ์ด ๊ธฐ์‚ฌ์˜ ๋ฒ”์œ„๋ฅผ ํ›จ์”ฌ ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•ด ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ์˜๊ฒฌ์„ ํ†ตํ•ด ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค.

๋ผ์šฐํŒ… ์„œ๋น„์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ„ฐ๋„ ์ข…๋ฃŒ์—๋„ VPS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ํ„ฐ๋„์„ ๋†’์ด๊ณ  ๊ฑฐ์˜ ๋ช…๋ฐฑํ•˜๊ฒŒ ์ด์— ๋Œ€ํ•ด NAT๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์—๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์— ๋Œ€ํ•œ ๋งŽ์€ ์ง€์นจ์ด ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ„ฐ๋„์˜ ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์€ VPS๋ฅผ ํ–ฅํ•œ ํ„ฐ๋„์„ ์ง€์›ํ•˜๋Š” ๋ณ„๋„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ผ์šฐํ„ฐ์— ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ๋˜๋Š” VPN ๊ธฐ์ˆ ์€ ์ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tun ๋ชจ๋“œ์˜ OpenVPN์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‚ฌ๋ณธ ๋ฐ›๊ธฐ

Jabrayil์ด ๋งํ–ˆ๋“ฏ์ด "์šฐ๋ฆฌ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ์‚ฌ๋žŒ์€ ์šฐ๋ฆฌ๋ฅผ ๋„์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค." RKN์€ ๊ธˆ์ง€๋œ ๋ฆฌ์†Œ์Šค์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ฃ„์•…์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” github์—์„œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‚ฌ๋ณธ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Linux ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜์—ฌ root'a(sudo su-) ์•„์ง ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ git์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

apt install git

ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‚ฌ๋ณธ์„ ๊บผ๋‚ด์‹ญ์‹œ์˜ค.

cd ~ && git clone --depth=1 https://github.com/zapret-info/z-i 

ํฌ๋ก  ์—…๋ฐ์ดํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(20๋ถ„๋งˆ๋‹ค ์—…๋ฐ์ดํŠธํ•˜์ง€๋งŒ ๊ด€์‹ฌ ์žˆ๋Š” ๊ฐ„๊ฒฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” crontab์„ -e ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

*/20 * * * * cd ~/z-i && git pull && git gc

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ๋ผ์šฐํŒ… ์„œ๋น„์Šค์šฉ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ํ›„ํฌ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. /root/zi/.git/hooks/post-merge ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ:

#!/usr/bin/env bash
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
    echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
check_run dump.csv "/root/blacklist/makebgp"

์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”

chmod +x /root/z-i/.git/hooks/post-merge

ํ›„ํฌ์—์„œ ์ฐธ์กฐํ•˜๋Š” makebgp ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‚˜์ค‘์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… ์„œ๋น„์Šค ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ

์ƒˆ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ํ˜„์žฌ ์šฐ๋ถ„ํˆฌ ์ €์žฅ์†Œ์— ์ถœ์‹œ๋œ ์ƒˆ ๋ฒ„์ „์€ ์‹œ์กฐ์ƒˆ ๋ฐฐ์„ค๋ฌผ๊ณผ ์‹ ์„ ๋„๊ฐ€ ๋น„์Šทํ•˜๋ฏ€๋กœ ๋จผ์ € ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž์˜ ๊ณต์‹ PPA๋ฅผ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

add-apt-repository ppa:cz.nic-labs/bird
apt update
apt install bird

๊ทธ๋Ÿฐ ๋‹ค์Œ IPv6์šฉ ์ƒˆ๋ฅผ ์ฆ‰์‹œ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์น˜์—์„œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

systemctl stop bird6
systemctl disable bird6

๋‹ค์Œ์€ ์ƒˆ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค(/etc/bird/bird.conf), ์ด๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ž์‹ ์˜ ํ•„์š”์— ๋งž๊ฒŒ ์•„์ด๋””์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†๋‹ค๋Š” ์ ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ธฐ์‹œ์ผœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.)

log syslog all;
router id 172.30.1.1;

protocol kernel {
        scan time 60;
        import none;
#       export all;   # Actually insert routes into the kernel routing table
}

protocol device {
        scan time 60;
}

protocol direct {
        interface "venet*", "tun*"; # Restrict network interfaces it works with
}

protocol static static_bgp {
        import all;
        include "pfxlist.txt";
        #include "iplist.txt";
}

protocol bgp OurRouter {
        description "Our Router";
        neighbor 81.177.103.94 as 64999;
        import none;
        export where proto = "static_bgp";
        local as 64998;
        passive off;
        multihop;
}

๋ผ์šฐํ„ฐ ID - ์‹œ๊ฐ์ ์œผ๋กœ IPv4 ์ฃผ์†Œ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ผ์šฐํ„ฐ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ IPv32 ์ฃผ์†Œ ํ˜•์‹์˜ 4๋น„ํŠธ ์ˆซ์ž์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์žฅ์น˜์˜ IPv4 ์ฃผ์†Œ(์ด ๊ฒฝ์šฐ VPS)๋ฅผ ๊ฑฐ๊ธฐ์— ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํ† ์ฝœ ์ง์ ‘์€ ๋ผ์šฐํŒ… ํ”„๋กœ์„ธ์Šค์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์ด๋ฆ„์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๋” ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์ค„์„ ์‚ญ์ œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” IPv4 ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœํ† ์ฝœ ์ •์ ์€ ๋‚˜์ค‘์— ๋ฐœํ‘œํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์—์„œ ์ ‘๋‘์‚ฌ ๋ฐ IP ์ฃผ์†Œ(๋ฌผ๋ก  /32 ์ ‘๋‘์‚ฌ) ๋ชฉ๋ก์„ ๋กœ๋“œํ•˜๋Š” ๋งˆ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด ๋ชฉ๋ก์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์—์„œ ๋…ผ์˜๋ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ๋กœ๋”ฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜์–ด ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ์—…๋กœ๋“œ๋Ÿ‰์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋น„๊ต๋ฅผ ์œ„ํ•ด ๊ธฐ์‚ฌ ์ž‘์„ฑ ๋‹น์‹œ์—๋Š” ์ ‘๋‘์‚ฌ ๋ชฉ๋ก์— 78์ค„, IP ์ฃผ์†Œ ๋ชฉ๋ก์— 85898์ค„์ด ์žˆ๋Š”๋ฐ ์ ‘๋‘์‚ฌ ๋ชฉ๋ก์—์„œ๋งŒ ์‹œ์ž‘ํ•˜๊ณ  ๋””๋ฒ„๊ทธํ•˜๊ณ  ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ๋ฅผ ์‹คํ—˜ํ•œ ํ›„ ๋‚˜์ค‘์— IP ๋กœ๋”ฉ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ๊ทธ๋“ค ๋ชจ๋‘๊ฐ€ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์˜ 85๊ฐœ ํ•ญ๋ชฉ์„ ์‰ฝ๊ฒŒ ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ”„๋กœํ† ์ฝœ bgp๋Š” ์‹ค์ œ๋กœ ๋ผ์šฐํ„ฐ์™€ bgp ํ”ผ์–ด๋ง์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ip-address๋Š” ๋ผ์šฐํ„ฐ์˜ ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค ์ฃผ์†Œ(๋˜๋Š” ๋ผ์šฐํ„ฐ ์ธก์˜ ํ„ฐ๋„ ์ธํ„ฐํŽ˜์ด์Šค ์ฃผ์†Œ)์ด๊ณ , 64998 ๋ฐ 64999๋Š” ์ž์œจ ์‹œ์Šคํ…œ์˜ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ 16๋น„ํŠธ ์ˆซ์ž ํ˜•์‹์œผ๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์ง€๋งŒ RFC6996 - 64512-65534์— ์ •์˜๋œ ๊ฐœ์ธ ๋ฒ”์œ„์˜ AS ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(32๋น„ํŠธ ASN ํ˜•์‹์ด ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๋Š” ํ™•์‹คํžˆ ๊ณผ์ž‰์ž…๋‹ˆ๋‹ค). ์„ค๋ช…๋œ ๊ตฌ์„ฑ์—์„œ๋Š” ๋ผ์šฐํŒ… ์„œ๋น„์Šค์™€ ๋ผ์šฐํ„ฐ์˜ ์ž์œจ ์‹œ์Šคํ…œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•˜๋Š” eBGP ํ”ผ์–ด๋ง์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ณด์‹œ๋‹ค์‹œํ”ผ ์„œ๋น„์Šค๋Š” ๋ผ์šฐํ„ฐ์˜ IP ์ฃผ์†Œ๋ฅผ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ๋™์ ์ด๊ฑฐ๋‚˜ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์—†๋Š” ๊ฐœ์ธ(RFC1918) ๋˜๋Š” ๊ณต์œ (RFC6598) ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ํ”ผ์–ด๋ง์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๋Š” ํ„ฐ๋„ ๋‚ด๋ถ€์—์„œ๋„ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

๋ผ์šฐํŒ… ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ฒ˜๋ฆฌ

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

#!/bin/bash
cut -d";" -f1 /root/z-i/dump.csv| tr '|' 'n' |  tr -d ' ' > /root/blacklist/tmpaddr.txt
cat /root/blacklist/tmpaddr.txt | grep / | sed 's_.*_route & reject;_' > /etc/bird/pfxlist.txt
cat /root/blacklist/tmpaddr.txt | sort | uniq | grep -Eo "([0-9]{1,3}[.]){3}[0-9]{1,3}" | sed 's_.*_route &/32 reject;_' > /etc/bird/iplist.txt
/etc/init.d/bird reload
logger 'bgp list compiled'

์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”

chmod +x /root/blacklist/makebgp

์ด์ œ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  /etc/bird์—์„œ ํŒŒ์ผ์˜ ๋ชจ์–‘์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋‹จ๊ณ„์—์„œ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ์ œ์•ˆํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ๋กœ์„œ๋Š” Bird๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹œ์ž‘์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

systemctl start bird
birdc show route

๋‘ ๋ฒˆ์งธ ๋ช…๋ น์˜ ์ถœ๋ ฅ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•ฝ 80๊ฐœ์˜ ํ•ญ๋ชฉ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” ํ˜„์žฌ๋กœ์„œ๋Š” ์„ค์ • ์‹œ ๋ชจ๋“  ๊ฒƒ์ด ์ฐจ๋‹จ ๋„คํŠธ์›Œํฌ์—์„œ ILV์˜ ์—ด์ •์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค).

54.160.0.0/12      unreachable [static_bgp 2018-04-19] * (200)

ํŒ€

birdc show protocol

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

BIRD 1.6.3 ready.
name     proto    table    state  since       info
kernel1  Kernel   master   up     2018-04-19
device1  Device   master   up     2018-04-19
static_bgp Static   master   up     2018-04-19
direct1  Direct   master   up     2018-04-19
RXXXXXx1 BGP      master   up     13:10:22    Established
RXXXXXx2 BGP      master   up     2018-04-24  Established
RXXXXXx3 BGP      master   start  2018-04-22  Connect       Socket: Connection timed out
RXXXXXx4 BGP      master   up     2018-04-24  Established
RXXXXXx5 BGP      master   start  2018-04-24  Passive

๋ผ์šฐํ„ฐ ์—ฐ๊ฒฐ

๋ชจ๋‘๊ฐ€ ์ด๋ฏธ ์ด ์‹ ๋ฐœ์„ ์ฝ๋Š” ๋ฐ ์ง€์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํž˜์„ ๋‚ด์‹ญ์‹œ์˜ค. ๋์ด ๊ฐ€๊นŒ์› ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์„น์…˜์—์„œ๋Š” ๋‹จ๊ณ„๋ณ„ ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ œ์กฐ์—…์ฒด๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋…ผ๋ฆฌ๋Š” BGP ํ”ผ์–ด๋ง์„ ๋†’์ด๊ณ  ์ˆ˜์‹ ๋œ ๋ชจ๋“  ์ ‘๋‘์‚ฌ์— nexthop์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ„ฐ๋„(p2p ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ) ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์ด๋”๋„ท์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ nexthop IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด RouterOS์˜ Mikrotik์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

/routing bgp instance set default as=64999 ignore-as-path-len=yes router-id=172.30.1.2
/routing bgp peer add in-filter=dynamic-in multihop=yes name=VPS remote-address=194.165.22.146 remote-as=64998 ttl=default
/routing filter add action=accept chain=dynamic-in protocol=bgp comment="Set nexthop" set-in-nexthop=172.30.1.1

Cisco IOS์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

router bgp 64999
  neighbor 194.165.22.146 remote-as 64998
  neighbor 194.165.22.146 route-map BGP_NEXT_HOP in
  neighbor 194.165.22.146 ebgp-multihop 250
!
route-map BGP_NEXT_HOP permit 10
  set ip next-hop 172.30.1.1

BGP ํ”ผ์–ด๋ง๊ณผ ์œ ์šฉํ•œ ํŠธ๋ž˜ํ”ฝ ์ „์†ก์— ๋™์ผํ•œ ํ„ฐ๋„์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ๋„ฅ์ŠคํŠธํ™‰์„ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•ด๋„ ์ƒํ™ฉ์ด ๋” ์•…ํ™”๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ๋Š” ๊ตฌ์„ฑ์„ ์ง์ ‘ ํŒŒ์•…ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์–ด๋ ค์›€์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•ด ์ฃผ์‹œ๋ฉด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

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

systemctl reload bird

๋ผ์šฐํ„ฐ๊ฐ€ 85๊ฐœ์˜ ๊ฒฝ๋กœ๋ฅผ ์–ด๋–ป๊ฒŒ ์ „์†กํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ „์›์„ ๋Œ ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š” ๐Ÿ™‚

์ „์ฒด๋กœ

์ˆœ์ „ํžˆ ์ด๋ก ์ ์œผ๋กœ ์œ„์˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๊ฑฐ์ณ ๋Ÿฌ์‹œ์•„ ์—ฐ๋ฐฉ์—์„œ ๊ธˆ์ง€๋œ IP ์ฃผ์†Œ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ž๋™์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๊ฐœ์„ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Perl ๋˜๋Š” Python ์†”๋ฃจ์…˜์„ ํ†ตํ•ด IP ์ฃผ์†Œ ๋ชฉ๋ก์„ ์š”์•ฝํ•˜๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค. Net::CIDR::Lite๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ„๋‹จํ•œ Perl ์Šคํฌ๋ฆฝํŠธ๋Š” 85๊ฐœ์˜ ์ ‘๋‘์‚ฌ๋ฅผ 60(XNUMX๊ฐœ๊ฐ€ ์•„๋‹˜)์œผ๋กœ ๋ฐ”๊พธ์ง€๋งŒ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฐจ๋‹จ๋œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋„“์€ ๋ฒ”์œ„์˜ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋Š” ISO/OSI ๋ชจ๋ธ์˜ ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๊ธฐ๋ก๋œ ์ฃผ์†Œ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์ดํŠธ/ํŽ˜์ด์ง€ ์ฐจ๋‹จ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ github์˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ํ•จ๊ป˜ nxdomain.txt ํŒŒ์ผ์ด ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๋ช‡ ๋ฒˆ์˜ ์Šคํฌ๋ฆฝํŠธ ์ŠคํŠธ๋กœํฌ๋งŒ์œผ๋กœ Chrome์˜ SwitchyOmega ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๊ฐ™์€ ์ฃผ์†Œ ์†Œ์Šค๋กœ ์‰ฝ๊ฒŒ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

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

์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์งˆ๋ฌธํ•˜๊ณ  ๋‹ต๋ณ€ํ•  ์ค€๋น„๋ฅผ ํ•˜์„ธ์š”.

UPD. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ํ•ญํ•ด ะธ TerAnYu ๋‹ค์šด๋กœ๋“œ ๋ณผ๋ฅจ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ git ์˜ต์…˜

UPD2. ๋™๋ฃŒ ์—ฌ๋Ÿฌ๋ถ„, VPS์™€ ๋ผ์šฐํ„ฐ ์‚ฌ์ด์˜ ํ„ฐ๋„ ์„ค์ •์— ๋Œ€ํ•œ ์ง€์นจ์„ ๊ธฐ์‚ฌ์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„ ์‹ค์ˆ˜๋ฅผ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋งŽ์€ ์งˆ๋ฌธ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ์„ ๋Œ€๋น„ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ์ง€๋งŒ, ์ด ๊ฐ€์ด๋“œ์˜ ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ด๋ฏธ ํ•„์š”ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ VPN ํ„ฐ๋„์„ ๊ตฌ์„ฑํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํ™•์ธํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ž˜ํ•‘ํ•˜๊ฑฐ๋‚˜ ์ •์ ์œผ๋กœ ๋ž˜ํ•‘). ์•„์ง ์ด ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ธฐ์‚ฌ์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•„์ง ์ด์— ๋Œ€ํ•œ ํ…์ŠคํŠธ๋Š” ์—†์ง€๋งŒ VPS์— ์„ค์น˜๋œ ์šด์˜ ์ฒด์ œ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ "OpenVPN ์„œ๋ฒ„ ์„ค์ •"์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ผ์šฐํ„ฐ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ "OpenVPN ํด๋ผ์ด์–ธํŠธ ์„ค์ •"์„ Google์— ๊ฒ€์ƒ‰ํ•˜๋ฉด ์•„๋งˆ๋„ Habrรฉ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ด ์ฃผ์ œ์— ๊ด€ํ•œ ์—ฌ๋Ÿฌ ๊ธฐ์‚ฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UPD3. ํฌ์ƒ๋˜์ง€ ์•Š์€ ์„ ํƒ์ ์œผ๋กœ IP ์ฃผ์†Œ๋ฅผ ํ•ฉ์‚ฐํ•˜์—ฌ dump.csv์—์„œ Bird์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "๋ผ์šฐํŒ… ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ฒ˜๋ฆฌ" ์„น์…˜์€ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ ํ˜ธ์ถœ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://habr.com/post/354282/#comment_10782712

UPD4. ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ์ž‘์—…(๋ณธ๋ฌธ์—๋Š” ๊ธฐ์—ฌํ•˜์ง€ ์•Š์Œ):
1) ๋Œ€์‹  systemctl ์ƒˆ๋กœ๊ณ ์นจ ์ƒˆ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค ์ƒˆ ๊ตฌ์„ฑ.
2) Mikrotik ๋ผ์šฐํ„ฐ์—์„œ ๋‹ค์Œ ํ™‰์„ ํ„ฐ๋„ ๋‘ ๋ฒˆ์งธ ์ธก๋ฉด์˜ IP๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  /๋ผ์šฐํŒ… ํ•„ํ„ฐ ์ถ”๊ฐ€ ์ž‘์—…=accept chain=dynamic-in ํ”„๋กœํ† ์ฝœ=bgp comment="๋‹ค์Œ ํ™‰ ์„ค์ •" set-in-nexthop=172.30.1.1 ์ฃผ์†Œ ์—†์ด ํ„ฐ๋„ ์ธํ„ฐํŽ˜์ด์Šค์— ์ง์ ‘ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. /๋ผ์šฐํŒ… ํ•„ํ„ฐ ์ถ”๊ฐ€ ์ž‘์—…=accept chain=dynamic-in ํ”„๋กœํ† ์ฝœ=bgp comment="๋‹ค์Œ ํ™‰ ์„ค์ •" set-in-nexthop-direct=<์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„>

UPD5. ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค https://antifilter.download, ์—ฌ๊ธฐ์—์„œ ๊ธฐ์„ฑ IP ์ฃผ์†Œ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. XNUMX๋ถ„๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋‚จ์€ ๊ฒƒ์€ ํ•ด๋‹น "๊ฒฝ๋กœ ... ๊ฑฐ๋ถ€"๋กœ ํ•ญ๋ชฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋งˆ๋„ ํ• ๋จธ๋‹ˆ๋ฅผ ํ”๋“ค๊ณ  ๊ธฐ์‚ฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

UPD6. ์ดํ•ดํ•˜๊ณ  ์‹ถ์ง€ ์•Š์ง€๋งŒ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ธฐ์‚ฌ์˜ ๊ฐœ์ •ํŒ- ์—ฌ๊ธฐ์—.

์ถœ์ฒ˜ : habr.com

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