왜 더 큰 길 찾기 약속이 필요한가
앞 장까지 우리는 집 안 장치가 공유기를 지나 통신사망으로 나가는 흐름을 보았다. 집 안에서는 공유기 하나가 중심이 될 수 있다. 작은 실습망에서는 라우터 몇 대에 경로를 직접 적어 넣을 수도 있다.
하지만 전 세계 인터넷은 그렇게 만들 수 없다. 인터넷에는 수많은 통신사, 클라우드 회사, 대학, 기업, 데이터센터가 연결되어 있다. 모든 라우터가 전 세계 모든 장비의 위치를 하나씩 외우는 방식은 금방 무너진다.
그래서 인터넷은 더 큰 단위로 길을 나눈다. "이 회사 네트워크 안의 자세한 길은 그 회사가 알아서 관리한다. 밖에서는 그 회사가 어떤 주소 대역을 맡고 있는지만 알면 된다." 이런 방식이다.
비유하면, 전국의 모든 운전자가 모든 도시의 골목길까지 외우지는 않는다. 택배는 먼저 어느 도시, 어느 물류 회사 구역으로 보낼지 정한다. 그다음 그 지역 안의 자세한 배달은 지역 물류망이 처리한다. 인터넷도 비슷하다. 단, 실제 인터넷에서는 도시 이름 대신 IP 주소 대역을 쓰고, 물류 회사 대신 큰 네트워크 운영 주체가 등장한다.
AI 생성 이미지
인터넷은 자율 시스템들의 연결이다
전 세계 인터넷을 이루는 큰 네트워크 단위를 자율 시스템, 즉 AS(Autonomous System)라고 한다. 쉽게 말해, 하나의 운영 정책 아래 움직이는 큰 네트워크 묶음이다. 통신사, 대형 클라우드 사업자, 콘텐츠 회사, 대학, 큰 기업이 AS를 가질 수 있다.
각 AS에는 ASN(Autonomous System Number)이라는 번호가 붙는다. 전화번호부에서 사람을 번호로 구분하듯, 인터넷의 큰 네트워크들은 ASN으로 서로를 구분한다. AS 안에서는 운영자가 자기 방식대로 라우터를 배치하고 내부 경로를 관리한다. 밖의 AS는 그 내부 사정을 자세히 알 필요가 없다.
예를 들어 단순하게 보면 다음과 같다.
| 구분 | 역할 |
|---|---|
| AS 65010 | 집 인터넷을 제공하는 통신사 |
| AS 65020 | 웹 서버를 운영하는 콘텐츠 회사 |
| AS 65030 | 두 회사를 이어 주는 다른 대형 통신사 |
사용자의 노트북은 AS 번호를 직접 신경 쓰지 않는다. 브라우저도 "AS 65020으로 가야지"라고 말하지 않는다. 사용자는 도메인 이름을 입력하고, DNS는 IP 주소를 알려 준다. 그다음 패킷이 여러 AS를 지나 목적지에 도착한다.
여기서 비유는 끝난다. AS는 실제 지리적 도시와 같지 않다. 한 AS가 여러 나라에 장비를 둘 수도 있고, 한 건물 안에 여러 AS가 함께 있을 수도 있다. AS는 땅의 경계가 아니라 운영 주체와 라우팅 정책의 경계에 가깝다.
BGP는 "우리 쪽으로 오면 갈 수 있다"고 말한다
AS들이 서로 길을 알려 주는 대표적인 약속이 BGP(Border Gateway Protocol)이다. 처음에는 어렵게 들리지만 핵심 문장은 짧다.
BGP는 큰 네트워크들이 서로에게 "이 IP 주소 대역은 우리 쪽을 통해 갈 수 있다"고 알려 주는 약속이다.
여기서 IP 주소 대역, 또는 프리픽스(prefix)는 여러 IP 주소를 한 묶음으로 표시한 것이다. 예를 들어 203.0.113.0/24는 203.0.113.x 범위의 주소 묶음처럼 볼 수 있다. 라우터가 주소 하나하나를 따로 외우지 않고 주소 묶음 단위로 길을 관리하기 위해 이런 표현을 쓴다.
BGP에서 어떤 AS가 특정 프리픽스를 알리는 일을 경로 광고라고 한다. 말 그대로 길 안내문을 뿌리는 것이다.
"
203.0.113.0/24로 가려면 나에게 보내도 된다."
이 광고를 들은 이웃 AS는 자기 라우터에 그 길을 기록한다. 그리고 필요하다면 다른 이웃 AS에게 다시 알려 준다. 이때 광고에는 AS_PATH라는 정보가 붙는다. AS_PATH는 그 경로 광고가 거쳐 온 AS 번호 목록이다. 택배 송장에 "이 물건은 A 물류센터, B 물류센터를 거쳐 왔다"는 흔적이 남는 것과 비슷하다.
AS_PATH는 두 가지 이유로 중요하다. 첫째, 같은 곳을 빙빙 도는 길을 막는다. 어떤 AS가 경로 광고를 받았는데 AS_PATH 안에 자기 ASN이 이미 들어 있다면, 그 광고는 자기 자신을 다시 거쳐 돌아오는 길이다. 이런 길은 버린다. 둘째, 여러 경로 중 하나를 고를 때 판단 재료가 된다. 다른 조건이 비슷하다면 거치는 AS 수가 적은 길이 더 단순한 길로 보일 수 있다.1
하지만 여기서 조심해야 한다. AS_PATH는 "광고가 거쳐 온 큰 네트워크 목록"이지, 패킷 안에 붙어서 끝까지 따라가는 전체 여행 일정표가 아니다. 실제 패킷은 각 라우터에 도착할 때마다 그 라우터의 판단에 따라 다음 방향으로 넘겨진다.
가장 짧은 길이 항상 선택되지는 않는다
작은 네트워크를 배울 때는 "목적지까지 가장 가까운 길을 고른다"고 생각해도 큰 문제가 없었다. 하지만 전 세계 인터넷에서는 이야기가 달라진다. BGP는 단순한 최단 거리 찾기 장치가 아니다. 인터넷의 큰 길은 기술뿐 아니라 계약, 비용, 관계의 영향을 받는다.
AS 사이의 관계는 대략 세 가지로 볼 수 있다.
고객 관계: 한 AS가 다른 AS에게 돈을 내고 인터넷 연결을 산다.
제공자 관계: 돈을 받고 다른 AS의 트래픽을 더 넓은 인터넷으로 보내 준다.
피어링 관계: 서로 비슷한 위치의 AS끼리 트래픽을 직접 맞교환한다.
현실의 도로로 비유하면, 어떤 길은 무료로 쓸 수 있고, 어떤 길은 통행료가 비싸고, 어떤 길은 특정 회사 차량끼리만 서로 열어 준다. 그래서 어떤 AS는 기술적으로는 짧은 길이 있어도 비용이 큰 길을 피할 수 있다. 반대로 고객에게서 들어온 트래픽은 수익과 관련이 있으므로 더 우선할 수 있다.
또 BGP는 각 AS 내부의 자세한 사정을 모른다. AS_PATH가 짧다고 해서 실제 물리 거리가 짧다는 뜻은 아니다. 거치는 AS가 두 개뿐이어도 해저 케이블을 돌아갈 수 있고, 거치는 AS가 세 개여도 실제로는 더 빠를 수 있다. BGP는 인터넷 전체의 교통 체증, 케이블 품질, 내부 라우터 상태를 완벽히 보고 결정하지 않는다.
따라서 인터넷 경로는 "가장 짧은 길"이라기보다 "각 네트워크 운영자가 정한 규칙 안에서 선택된 길"에 가깝다. 이것이 BGP를 정책 기반 라우팅이라고 부르는 이유다. 여기서 정책은 어려운 말이지만, 쉽게 말하면 "우리 회사는 어떤 이웃의 길을 더 믿고, 어떤 길은 비용 때문에 덜 쓰겠다"는 운영 규칙이다.
잘못된 경로 광고는 큰 장애가 된다
BGP의 강점은 느슨한 연결이다. 전 세계 네트워크가 중앙 관리자 하나 없이 서로 길을 알려 주며 이어진다. 그러나 이 강점은 약점이 되기도 한다. 누군가 잘못된 길을 광고하면, 다른 네트워크들이 그 말을 믿고 트래픽을 엉뚱한 곳으로 보낼 수 있다.
대표적인 문제가 프리픽스 하이재킹이다. 하이재킹은 남의 것을 가로챈다는 뜻이다. 네트워크에서는 어떤 AS가 자신이 맡지 않은 IP 주소 대역을 "내가 갈 수 있다"고 광고하는 상황을 말한다. 실수로 그럴 수도 있고, 악의적으로 그럴 수도 있다.
예를 들어 원래 203.0.113.0/24는 AS 65020이 맡고 있다고 하자. 그런데 AS 65099가 갑자기 같은 대역을 광고한다.
"
203.0.113.0/24는 나에게 보내도 된다."
이 광고가 퍼지면 일부 인터넷은 AS 65099를 진짜 목적지로 착각할 수 있다. 그러면 사용자의 접속이 실패하거나, 먼 길로 돌아가거나, 더 나쁘게는 공격자의 장비를 지나갈 수 있다.
또 다른 문제는 경로 유출(route leak)이다. 이것은 완전히 가짜 목적지를 주장하는 것과는 조금 다르다. 어떤 AS가 이웃에게서 배운 경로를 원래 알려 주면 안 되는 다른 이웃에게 퍼뜨리는 경우다. 비유하면, 특정 택배 회사 내부용 우회로 정보를 엉뚱한 외부 회사에 넘겨서 많은 물량이 그 길로 몰리는 상황이다. 결과적으로 인터넷 일부가 느려지거나, 목적지에 도달하지 못하거나, 이상한 우회로를 타게 된다.2
특히 라우터는 목적지 IP 주소와 맞는 여러 경로가 있을 때 더 구체적인 주소 대역을 우선한다. 예를 들어 203.0.113.0/24와 203.0.112.0/23이 동시에 보이면, 목적지 주소가 203.0.113.x일 때 더 좁고 구체적인 /24 경로를 고른다. 이 원리는 정상적인 라우팅에도 필요하지만, 잘못 쓰이면 작은 거짓 광고가 많은 트래픽을 끌어당기는 원인이 될 수 있다.
고장 나면 어디를 볼 것인가
전 세계 인터넷 경로 문제는 집 안 와이파이 문제보다 멀리 있다. 그래도 확인 순서는 비슷하다. 가까운 곳에서 먼 곳으로 나누어 본다.
먼저 내 장치가 정상적으로 IP 주소, 게이트웨이, DNS를 받았는지 본다. 그다음 공유기와 통신사 구간이 살아 있는지 본다. 여기까지 문제가 없다면, 목적지 주소 대역이 인터넷에 제대로 광고되고 있는지 의심할 수 있다.
큰 네트워크 운영자들은 보통 다음을 확인한다.
목적지 프리픽스가 올바른 AS에서 광고되고 있는가?
이웃 AS가 그 광고를 받아들이고 있는가?
AS_PATH가 이상하게 길어졌거나 낯선 AS를 지나고 있지 않은가?
더 구체적인 수상한 프리픽스가 갑자기 등장하지 않았는가?
경로 필터나 보안 검증 때문에 정상 광고가 버려지고 있지는 않은가?
이를 막기 위해 여러 방어 장치도 쓴다. 예를 들어 이웃 AS가 광고해도 되는 프리픽스만 받아들이도록 거르는 경로 필터링이 있다. 또 특정 IP 주소 대역을 어느 AS가 시작점으로 광고할 수 있는지 확인하는 RPKI 같은 체계도 있다. RPKI는 토지 등기부처럼 "이 주소 대역은 이 AS가 광고할 권한이 있다"는 정보를 검증하는 데 도움을 준다. 다만 모든 문제를 완전히 막지는 못한다. 특히 경로 유출처럼 "시작점은 맞지만 퍼뜨리는 방향이 잘못된 문제"는 별도의 운영 정책과 필터링이 함께 필요하다.
작은 인터넷에서 진짜 인터넷으로
우리가 앞에서 만든 작은 인터넷에는 라우터 몇 대와 직접 적은 라우팅 테이블이 있었다. 그 세계에서는 관리자가 모든 길을 손으로 쓸 수 있었다.
전 세계 인터넷에서는 그 일을 사람이 직접 할 수 없다. 대신 AS라는 큰 단위가 생기고, AS끼리 BGP로 길을 광고한다. "내가 이 주소 대역을 안다", "내 이웃을 통해 저 주소 대역에 갈 수 있다"는 정보가 퍼지면서 인터넷의 큰 길이 만들어진다.
중요한 점은 인터넷이 하나의 거대한 중앙 장비로 움직이지 않는다는 것이다. 인터넷은 서로 다른 운영자들이 자기 정책을 가지고 연결한 결과다. 그래서 강하다. 한 길이 끊겨도 다른 길이 생길 수 있다. 동시에 조심해야 한다. 잘못된 길 안내 하나가 넓은 범위의 장애로 번질 수 있다.
이제 우리는 집 안 네트워크에서 시작해 전 세계 인터넷의 큰 길 나누기까지 올라왔다. 다음 단계는 이 길 위를 더 안전하게 만드는 일이다. 길이 있다고 해서 모두에게 열어 두면 안 된다. 누가 들어오고 나가는지, 어떤 데이터가 보호되어야 하는지 정해야 한다.
참고
1BGP Routing: An In-Depth Tutorial and Examples
2BGP Hijacking Explained: Route Leaks, Prefix Hijacks, and RPKI
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.