λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/Network

10μ›” 4일자 페이슀뢁 μž₯μ•  원인 νŒŒν—€μΉ˜κΈ°

by vodkassi 2021. 12. 15.
728x90
μ§€λ‚œ 10μ›”, μ „ μ„Έκ³„μ μœΌλ‘œ 페이슀뢁 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” λŒ€κ·œλͺ¨ μž₯μ• κ°€ λ°œμƒν–ˆμ—ˆλ‹€. 이와 κ΄€λ ¨λœ 글을 μž‘μ„±ν•΄ λ‘μ—ˆλŠ”λ°, μ—…λ‘œλ“œ μ‹œκΈ°λ₯Ό 놓쳐 μ €μž₯만 ν•΄λ‘μ—ˆλ‹€κ°€ SPoF κ΄€λ ¨ λ‚΄μš©μ˜ μ‚¬λ‘€λ‘œ ν™œμš©ν•˜κΈ° μœ„ν•΄ μ—…λ‘œλ“œν•˜κ²Œ λ˜μ—ˆλ‹€. 

 

πŸ’‘ μ‚¬κ±΄μ˜ κ°œμš”

 

2021λ…„ 10μ›” 04일, 페이슀뢁과 μΈμŠ€νƒ€κ·Έλž¨, 왓츠앱이 ν•œ μˆœκ°„μ— 접속이 λΆˆκ°€λŠ₯ν•΄μ‘Œλ‹€. EST (동뢀 μ‹œκ°„) κΈ°μ€€ μ˜€μ „ 11μ‹œ 40λΆ„λΆ€ν„° μ•½ 6μ‹œκ°„ λ™μ•ˆ 접속할 수 μ—†μ—ˆλ‹€κ³  ν•˜λ‹ˆ, ν•œκ΅­ μ‹œκ°„μœΌλ‘œλŠ” 5일 μƒˆλ²½ 12μ‹œ 반 μ¦ˆμŒλΆ€ν„° μ˜€μ „ 6μ‹œ λ„˜μ–΄μ„œκΉŒμ§€ 접속할 수 μ—†μ—ˆλ˜ μ…ˆμ΄λ‹€. 

 

개인적으둜 이번 μž₯μ• κ°€ νŠΉμ΄ν–ˆλ˜ μ΄μœ λŠ” 두 가지이닀. 같은 νšŒμ‚¬μ˜ μ„œλΉ„μŠ€μΈ 페이슀뢁, μΈμŠ€νƒ€κ·Έλž¨, μ™“μΈ μ•± μ „λΆ€κ°€ ν•œ λ²ˆμ— λ‹€μš΄λ˜μ—ˆλ‹€λŠ” 점과, μ—¬λŠ λ•Œμ™€λŠ” λ‹€λ₯΄κ²Œ 접속 μ‹œ 화면에 μ–΄λ– ν•œ μ—λŸ¬ 메세지도 λ„μ›Œμ£Όμ§€ μ•Šμ•˜λ‹€λŠ” 점이닀. (보톡 μ„œλ²„κ°€ λ‹€μš΄λ˜λŠ” 경우 500λ²ˆλŒ€ μ—λŸ¬κ°€ 뜨기 마련인데..) λ‹¨μˆœνžˆ μ„œλ²„ ν•œ μͺ½μ„ λ‹΄λ‹Ήν•˜λŠ” λͺ¨λ“ˆμ— μ΄μƒν•œ μ½”λ“œκ°€ 머지(merge) 된 μˆ˜μ€€μ΄ 아닐 κ²ƒμ΄λΌλŠ” 생각에 이번 μž₯μ• μ˜ 원인을 더 μ•Œμ•„λ³΄μ•˜κ³ , μ˜ˆμƒν–ˆλ˜ 것보닀 λ”μš± λ‹¨μˆœν•œ (κ·ΈλŸ¬λ‚˜ 훨씬 νŒŒκΈ‰λ ₯ μžˆλŠ”) 원인이 μžˆμ—ˆμŒμ„ μ•Œκ²Œ λ˜μ—ˆλ‹€.

 

λͺ‡ μ‹œκ°„ λ™μ•ˆ κ³ ν†΅λ°›μ•˜μ„ 페이슀뢁 λ„€νŠΈμ›Œν¬ νŒ€μ„ μƒκ°ν•˜λ©΄ λ‚΄κ°€ λ‹€ μ•„μ°”ν•˜λ‹€

 

πŸ“Œ  μž₯μ•  원인 (κΈ°λ³Έ) 

이번 μž₯μ• μ˜ 원인을 ν•œ μ€„λ‘œ μš”μ•½ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€. 페이슀뢁의 라우트 (route) κ°€ λΌμš°ν„°μ—μ„œ (그리고 κΆκ·Ήμ μœΌλ‘œλŠ” λ„€νŠΈμ›Œν¬μ—μ„œ) μ‚­μ œλ˜μ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€. λ‹¨μˆœνžˆ ν‘œν˜„ν•˜λ©΄ "페이슀뢁으둜 κ°€λŠ” κΈΈ" 이 λ„€νŠΈμ›Œν¬ μƒμ—μ„œ μ™„μ „νžˆ μ‚¬λΌμ‘ŒκΈ° λ•Œλ¬Έμ—, 세계 μ–΄λŠ κ³³μ—μ„œλ„ νŽ˜μ΄μŠ€λΆμ— μš”μ²­μ„ 보낼 μˆ˜λ„, 받을 μˆ˜λ„ μ—†κ²Œ 된 κ²ƒμ΄μ—ˆλ‹€.

 

 

πŸ“Œ  μž₯μ•  원인 (심화) 

개발 고수라면 ν•œ 쀄 μš”μ•½λ³Έλ§Œ 읽어도 λŒ€μΆ© μ–΄λ–€ 뢀뢄이 이번 μ‚¬νƒœμ˜ 핡심 λ¬Έμ œμ˜€λŠ”μ§€ 감이 μž‘νžˆκ² μ§€λ§Œ, 이 κΈ€μ—μ„œλŠ” 그렇지 μ•Šμ€ μ‚¬λžŒλ“€μ„ μœ„ν•΄ ꡬ체적인 원인을 μˆœμ„œλŒ€λ‘œ νŒŒν—€μ³κ°€λ©° κ΄€λ ¨ κ°œλ…λ“€λ„ ν•˜λ‚˜μ”© μ§šμ–΄λ³΄λ„λ‘ ν•˜κ² λ‹€. 

 

πŸ’‘ 사전 지식: λͺ¨λ“  url 은 μœ μΌν•œ ip μ£Όμ†Œλ₯Ό κ°–λŠ”λ‹€. 

 

μ»΄ν“¨ν„°λŠ” μ›Ή λΈŒλΌμš°μ €μ— facebook.com μ΄λΌλŠ” url 이 μž…λ ₯되면 facebook.com 의 μ„œλ²„λ‘œλΆ€ν„° 정보λ₯Ό 받아와 화면을 λ„μš΄λ‹€. DNS λž€ Domain Name System 의 μ•½μ–΄λ‘œ, URL μ£Όμ†Œμ™€ IP μ£Όμ†Œλ₯Ό λ§€μΉ­ν•˜λŠ” 역할을 ν•œλ‹€. 

 

μ›λž˜λŒ€λ‘œλΌλ©΄ μ›Ή λΈŒλΌμš°μ €μ— facebook.com 을 μž…λ ₯ν–ˆμ„ λ•Œ, λΈŒλΌμš°μ €λŠ” facebook.com μ΄λΌλŠ” 이름을 κ°–λŠ” IP μ£Όμ†Œλ₯Ό μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ DNS 쿼리λ₯Ό λ‚ λ¦°λ‹€. 보톡은 μ›Ή λΈŒλΌμš°μ €κ°€ μœ„μΉ˜ν•œ 컴퓨터 내에 자주 μ‚¬μš©ν•˜λŠ” IP μ£Όμ†Œκ°€ μΊμ‹±λ˜μ–΄ μžˆλŠ”λ°, 그런 κ²½μš°μ—λŠ” λ‹€λ₯Έ λ„€μž„ μ„œλ²„μ— 질의λ₯Ό ν•  ν•„μš” 없이 λ°”λ‘œ IP μ£Όμ†Œλ‘œ 직접 μš”μ²­μ„ 보낼 수 μžˆλ‹€.

 

ν•˜μ§€λ§Œ 그렇지 μ•Šμ€ 경우, "facebook.com 의 IP μ£Όμ†Œλ₯Ό μ°ΎλŠ”" DNS 쿼리λ₯Ό μ—°κ²°λœ λ‹€λ₯Έ λ„€μž„ μ„œλ²„μ— 보낸닀. λ§Œμ•½ ν•΄λ‹Ή λ„€μž„ μ„œλ²„ μ—­μ‹œ facebook.com 의 IP μ£Όμ†Œλ₯Ό 가지고 μžˆμ§€ μ•Šμ€ 경우, μΈμ ‘ν•œ (IP μ£Όμ†Œλ₯Ό μ•Œκ³  μžˆμ„ κ°€λŠ₯성이 높은) λ‹€λ₯Έ λ„€μž„ μ„œλ²„μ˜ μ£Όμ†Œλ₯Ό λ°›κ²Œ λœλ‹€. κ·Έλ ‡κ²Œ μ—¬λŸ¬ 곳에 μ°¨λ‘€λŒ€λ‘œ μš”μ²­μ„ 보낸 뒀에야 λΉ„λ‘œμ†Œ facebook.com 에 ν•΄λ‹Ήν•˜λŠ” IP μ£Όμ†Œλ₯Ό μ–»μ–΄, 그곳으둜 νŒ¨ν‚·μ„ 보낼 수 있게 λœλ‹€. (이와 κ΄€λ ¨ν•˜μ—¬ DNS의 λ™μž‘ 방식 ν¬μŠ€νŒ… μ— μžμ„Έν•œ λ‚΄μš©μ΄ μžˆλ‹€.)

 

즉, μœ„ λ‚΄μš©μ˜ 핡심은 λ„€νŠΈμ›Œν¬λ§ μ–΄λ””μ—”κ°€ facebook.com 에 μΌμΉ˜ν•˜λŠ” IP μ£Όμ†Œκ°€ μ‘΄μž¬ν•œλ‹€λŠ” 것, 그리고 ν•΄λ‹Ή IP μ£Όμ†Œλ₯Ό μ°Ύμ•„κ°€λ©΄ facebook.com 의 μ„œλ²„μ— 접속할 수 μžˆλ‹€λŠ” 것이닀. 

 

❗ κ·Έλ ‡λ‹€λ©΄ 무엇이 λ¬Έμ œμ˜€λ‚˜?

"ν•΄λ‹Ή IP μ£Όμ†Œλ₯Ό μ°Ύμ•„κ°€λ©΄ facebook.com 의 μ„œλ²„μ— 접속할 수 μžˆλ‹€" λŠ” λΆ€λΆ„μ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€. 이에 λŒ€ν•΄ μ™Έμ‹ μ—μ„œλŠ” "facebook disconnected themselves from the internet" λΌλŠ” ν‘œν˜„μ„ μ‚¬μš©ν•˜κΈ°λ„ ν–ˆλŠ”λ°, κ·Έ μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€. 

 

기업이 컀지고 ν•˜λ‚˜μ˜ λ„€νŠΈμ›Œν¬ λŒ€μ—­μ— μ—°κ²°λœ 단말이 λ§Žμ•„μ§€λ©΄ 자기 슀슀둜 ν•˜λ‚˜μ˜ λ―Έλ‹ˆ 인터넷 망 (자율 μ‹œμŠ€ν…œ, AS) 을 ν˜•μ„±ν•˜μ—¬ μ‚¬μš©ν•˜κ²Œ λœλ‹€. νŽ˜μ΄μŠ€λΆλ„ λ§ˆμ°¬κ°€μ§€μ˜€λ‹€. 즉 페이슀뢁 λ‚΄μ˜ λͺ¨λ“  μ„œλ²„λŠ” 같은 망을 μ‚¬μš©ν•˜κ³ , λ‚΄λΆ€ λ§μ—μ„œ μ™ΈλΆ€ 망으둜 μ—°κ²°ν•˜λŠ” ν•˜λ‚˜μ˜ 연결지점을 톡해 톡신이 κ°€λŠ₯ν•œ μƒν™©μ΄μ—ˆλ‹€. 이 "연결지점"μ΄λž€ κ²°κ΅­ λΌμš°ν„°λ₯Ό μ˜λ―Έν•˜λŠ”λ°, 이 λΌμš°ν„°λŠ” BGP4 λΌλŠ” ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•œλ‹€. 

 

BGP(Border Gateway Protocol) : λ‹€λ₯Έ 자율 μ‹œμŠ€ν…œ(AS)의 λΌμš°ν„° κ°„ λΌμš°νŒ… 정보λ₯Ό κ΅ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν”„λ‘œν† μ½œ. 즉, λ„€νŠΈμ›Œν¬λΌλ¦¬ μ—°κ²°ν•˜λŠ” λΌμš°ν„°μ—μ„œ μ‚¬μš©λœλ‹€. 자율 μ‹œμŠ€ν…œ λ‚΄λΆ€μ˜ 톡신 μ—­μ‹œ BGP λ₯Ό 톡해 μ΄λ£¨μ–΄μ§€λŠ”λ°, μ΄λ•Œ ν•΄λ‹Ή ν”„λ‘œν† μ½œμ„ IBGP (Internal Border Gateway Protocol) 이라고 ν•œλ‹€. 

 

보톡 이 BGP4 의 ν”„λ‘œν† μ½œμ„ 톡해 λ„€νŠΈμ›Œν¬λ“€μ΄ μžμ‹ μ˜ μ£Όμ†Œλ₯Ό, 즉 IP λ₯Ό 계속 λ‹€λ₯Έ λΌμš°ν„°λ“€μ—κ²Œ μ•Œλ €μ€€λ‹€. 마치 μ§‘λ§ˆλ‹€ 집 μ£Όμ†Œκ°€ λΆ™μ–΄μžˆλ“―, λΌμš°ν„°λ§ˆλ‹€ "λ‚΄ μ£Όμ†ŒλŠ” 192.0.0.1 이야~" ν•˜λŠ” μ‹μœΌλ‘œ 선언을 ν•˜λŠ” 것이닀. λΌμš°ν„°μ™€ 컴퓨터듀은 κ³„μ†ν•΄μ„œ μžλ™μœΌλ‘œ IP 경둜λ₯Ό μ΅œμ ν™”ν•˜κΈ° λ•Œλ¬Έμ—, μΈν„°λ„·μ— μžˆλŠ” λͺ¨λ“  경둜 정보λ₯Ό 계속 λ™μ μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λ©°, 각 λΌμš°ν„°μ˜ μ£Όμ†Œλ₯Ό κ΅ν™˜ν•˜μ—¬ μ–΄λ–€ λΌμš°ν„°κ°€ μ–΄λ–€ IP μ£Όμ†Œλ‘œ μ•ˆλ‚΄ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•œλ‹€. 

 

ν•˜μ§€λ§Œ ν•œ μˆœκ°„μ—, facebook 의 λΌμš°ν„°κ°€ μžμ‹ μ˜ 정보λ₯Ό μ•Œλ €μ£ΌλŠ” 것을 λ©ˆμΆ°λ²„λ Έλ‹€. 

 

μ•Œλ €μ§„ 바에 λ”°λ₯΄λ©΄, λ‚΄λΆ€ κ°œλ°œμžκ°€ config (μ„€μ •) μž‘μ—…μ„ 마친 ν›„ κ²°κ³Όλ₯Ό push ν–ˆλŠ”λ°, μž‘μ—… λ‚΄μš©μ— λΌμš°ν„°μ˜ 정보λ₯Ό μ‚­μ œν•˜λŠ” 것도 ν¬ν•¨λ˜μ–΄λ²„λ¦° 것이닀. 페이슀뢁의 λΌμš°ν„°κ°€ IP μ£Όμ†Œλ₯Ό μ‚­μ œν•˜μž, ν•΄λ‹Ή IP 둜 μ°Ύμ•„κ°€λ €κ³  ν–ˆλ˜ μˆ˜λ§Žμ€ νŒ¨ν‚·λ“€μ€ 인터넷 λ§μ—μ„œ λ¬΄ν•œνžˆ λ– λŒλ‹€κ°€ νƒ€μž„μ•„μ›ƒμ΄ μ§€λ‚˜μž 사라져버렸고, μ—°κ²°λ˜μ—ˆλ˜ λΌμš°ν„°λ“€λ„ ν•˜λ‚˜λ‘˜μ”© 페이슀뢁의 IP λ₯Ό μ£Όμ†Œλ‘μ—μ„œ μ‚­μ œν•˜κΈ° μ‹œμž‘ν–ˆλ‹€. 

 

그리고 2021λ…„ 10μ›” 4일 UTC 16:27 에 페이슀뢁 μ„œλ²„λŠ” μΈν„°λ„·μ—μ„œ μ•„μ˜ˆ λŠμ–΄μ Έλ²„λ ΈμœΌλ©°, "페이슀뢁" 은 인터넷 상에 "μ—†λŠ” μ£Όμ†Œ" κ°€ λ˜μ–΄ 버렸닀. 

 

❗❗❗❗ 더 μ‹¬ν•œ λ¬Έμ œλŠ”, 

λ‚΄λΆ€μ—μ„œλ„ igbp λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆκΈ° λ•Œλ¬Έμ—, λ‚΄λΆ€μ˜ λͺ¨λ“  λΌμš°ν„°λ“€λ„ λ™μΌν•œ 였λ₯˜λ₯Ό κ²ͺ게 λ˜μ—ˆλ‹€. 내뢀에 μ—°κ²°λœ λΌμš°ν„°λ“€λΌλ¦¬λ„ κ³„μ†ν•΄μ„œ ν†΅μ‹ ν•˜λ©° 정보λ₯Ό μ—…λ°μ΄νŠΈ ν•˜κ³  μžˆμ—ˆκΈ° λ•Œλ¬Έμ—, 페이슀뢁 μ—”μ§€λ‹ˆμ–΄λ“€μ‘°μ°¨ 페이슀뢁 μ„œλ²„μ— μ ‘κ·Όν•  수 μ—†λŠ” λ¬Έμ œκ°€ 생긴 것이닀. κ·Έλž˜μ„œ λ¬Έμ œλ˜λŠ” μ„œλ²„μ— μ ‘μ†ν•˜λ € 해도 물리적으둜 가깝지 μ•Šμ€ 이상 μΈν„°λ„·μœΌλ‘œλŠ” 접속을 λͺ»ν•˜λŠ” μƒν™©μ΄μ—ˆλŠ”λ°, λ¬Όλ¦¬μ μœΌλ‘œ μ„œλ²„μ— 접속할 수 μžˆλŠ” μ‚¬λžŒλ“€μ€ μˆ˜μ • κΆŒν•œμ΄ μ—†κ³ , κΆŒν•œμ΄ μžˆλŠ” μ‚¬λžŒλ“€κ³ΌλŠ” (인터넷이 μ•ˆλ˜λ‹ˆ, λ‹Ήμ—°νžˆ) 연락이 μ•ˆ λ˜μ—ˆλ‹€κ³  ν•œλ‹€. μ‹¬μ§€μ–΄λŠ” λ„€νŠΈμ›Œν¬λ₯Ό μ‚¬μš©ν•΄μ„œ μΆœμž…λ¬Έμ„ μ—¬λŠ” μΉ΄λ“œλ¦¬λ”λ„ μ•ˆλ˜μ—ˆλ‹€κ³  ν•˜λ‹ˆ... 정말 μ‹¬κ°ν•œ μƒν™©μ΄μ—ˆμ„ 것이닀.

 

 

이 λ¬Έμ œλŠ” κ²°κ΅­ 당일 UTC 21:00 에 λ‘€λ°±ν•΄μ„œ ν•΄κ²°ν–ˆλ‹€κ³  ν•˜λ‚˜, 연결이 λŠμ–΄μ§„ 5μ‹œκ°„ λ™μ•ˆ νŽ˜μ΄μŠ€λΆμ€ ꡉμž₯히 큰 μ˜μ—…μ†μ‹€μ„ λ΄€λ‹€. νŽ˜μ΄μŠ€λΆμ€ ꡉμž₯히 κ²¬κ³ ν•œ μœ„κΈ°κ΄€λ¦¬ μ‹œμŠ€ν…œμ„ 가지고 있기둜 μ•Œλ €μ Έ μžˆλŠ”λ°, 이런 λ‹¨μˆœν•œ SPoF μš”μ†Œλ‘œ 인해 μ—„μ²­λ‚œ 문제λ₯Ό μ•ΌκΈ°ν–ˆλ‹€λŠ” 것 μžμ²΄κ°€ ꡉμž₯히 큰 μ΄μŠˆμ˜€λ‹€κ³  λ³Έλ‹€. 

 

 

πŸ’‘ κ²°λ‘  + ν₯λ―Έ 포인트

κ°œλ°œμžλ‘œμ„œ 이 λ¬Έμ œμ— 관심을 κ°€μ§€κ²Œ 된 지 μ–Όλ§ˆ μ§€λ‚˜μ§€ μ•Šμ•„ κ΅­λ‚΄μ—μ„œλ„ KT 인터넷이 μ˜€μ „ λ‚΄λ‚΄ 먹톡이 λ˜λŠ” μ΄μŠˆκ°€ λ°œμƒν–ˆλ‹€. KT 에 λŒ€ν•œ 기사도 확인해 λ³΄μ•˜λŠ”λ°, μ—­μ‹œλ‚˜ μ„€μ • (config) 파일의 λͺ…λ Ήμ–΄ 문제둜 페이슀뢁 μ—°κ²° λ¬Έμ œμ™€ λΉ„μŠ·ν•œ 뢀뢄이 μžˆμ—ˆλ‹€. 갈수둝 μΌμƒμ˜ λ§Žμ€ 뢀뢄을 물리적인 세계보닀 인터넷 망의 세계에 μ˜μ‘΄ν•˜κ²Œ λ˜λŠ” 것이 21μ„ΈκΈ° μ‚¬νšŒμ˜ ν˜„μ£Όμ†ŒμΈλ°, μ˜μ‘΄λ„κ°€ λ†’μ•„μ§ˆμˆ˜λ‘ μ •μž‘ μ€‘μš”ν•œ 인터넷 μΈν”„λΌλ‚˜ λ³΄μ•ˆμ˜ κ°€μΉ˜λŠ” λŒ€λ‘λ˜κ³  μžˆμ§€ μ•Šμ€ 것 κ°™μ•„ μ˜μ•„ν•˜κΈ°λ„ ν•˜λ‹€. 

 

획기적인 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€μ–΄λ„ 이λ₯Ό κ³΅κΈ‰ν•˜λŠ” λ„€νŠΈμ›Œν¬ 인프라가 잘 κ°–μΆ°μ Έ μžˆμ§€ μ•ŠμœΌλ©΄ κ·Έ μ„œλΉ„μŠ€λŠ” 망할 μˆ˜λ°–μ— 없지 μ•Šλ‚˜ μ‹Άλ‹€. κ°œλ°œμžλ‘œμ„œ 인프라에 λŒ€ν•œ 이해도λ₯Ό κ°–μΆ°μ•Ό λ‘±λŸ°ν•  수 μžˆλŠ” 것 같기도 ν•˜κ³ .. μ•„λ¬΄νŠΌ 이번 페이슀뢁 μ‚¬νƒœλŠ” 인프라에 λŒ€ν•œ μ—¬λŸ¬ 고민을 ν•˜κ²Œ ν•˜λŠ” μ‚¬κ±΄μ΄μ—ˆλ˜ 것은 λΆ„λͺ…ν•˜λ‹€. 

 

 

✨ 참고자료

λŒ“κΈ€