장비가 고객 사이트를 떠나 작업장에 도착하고, 네트워크상 위치는 완전히 바뀌지만 동일한 자산 정체성을 유지한다. 이 이동에 얼마나 많은 계획이 필요한지는 세 가지 조건이 결정한다. 고객이 내부에서도 쓰는 주소를 재사용하는지, 작업장 세그먼트가 직원 네트워크와 격리되어 있는지, 그리고 옛 경로를 단지 우선순위로 누르는 것이 아니라 억제할 수 있는지다. 첫 번째를 틀리면 멀쩡한 장비를 디버깅하게 된다.

정체성은 주소가 아니다

인벤토리와 이름은 자산, 고객, 작업을 담아야 한다. 주소는 장비가 지금 어디에 연결되어 있는지를 담으며, 그것은 이동하면 바뀌는 사실이다. 둘을 뒤섞으면 숫자에서 의미를 읽는 전형적인 실수가 생긴다.

마지막 옥텟에 넣은 일련번호는 깔끔해 보이지만 라우터에게 아무것도 증명하지 않는다. 호스트가 무엇을 로컬로 보는지는 프리픽스 길이가 결정하며, 기억하기 좋은 번호 매기기가 그 산수를 바꾸지는 않는다.

주소가 고객을 암시하게 하고 싶다면 그것은 관례일 뿐이고, 아무도 그 위에 정책을 세우지 않는 한 관례는 괜찮다. 주소가 아니라 인벤토리에서 자산을 찾으면 작업장 이동은 보물찾기가 아니게 된다. 모든 사이트에 언젠가 찾아오는 재번호 부여도 견딜 수 있다.

일련번호는 프리픽스 길이가 아니다

10.0.0.0/8 같은 넓은 마스크를 쓰는 장비는 그 범위의 모든 주소를 직접 연결된 것으로 취급하므로, 두 네트워크 떨어진 고객 장비로 가는 트래픽은 라우터에 아예 도달하지 않는다. 장비는 응답할 수 없는 이웃을 향해 브로드캐스트할 뿐이다.

RFC 4632는 프리픽스를 점으로 구분된 숫자가 암시하는 것이 아니라 길이로 정의한다. 계획에는 연결 그룹마다 명시적인 길이가 필요하다. 서비스 세그먼트, 고객 컨텍스트, 작업장 작업대다. 이 그룹들의 이름을 먼저 붙이면 길이는 자명해진다.

실무 규칙은 하나의 연결 그룹을 덮는 가장 작은 프리픽스를 설계하고 그 그룹 안에서 일관되게 쓰는 것이다. 주소 텍스트는 사람을 위한 것이고, 커널이 작용하는 대상은 마스크다.

두 고객이 같은 주소를 재사용할 때

고객 A와 고객 B는 둘 다 192.168.10.0/24을 운영할 수 있고, 각자의 건물 안에서는 둘 다 옳다. 이것은 남의 설비를 재번호 부여해서 푸는 문제가 아니다.

컨텍스트를 분리해 두거나, 어느 주소가 어느 시점에 어느 고객의 것인지 문서화하는 설계를 통해 의도적인 별칭을 제공한다. 전역 인벤토리는 장비를 구별하는 올바른 도구이지, 주소가 전 세계적으로 유일하다는 증거가 아니다. 별칭 경로에는 서면 만료 규칙이 필요하며, 없으면 그것을 만든 작업보다 오래 살아남는다.

피해야 할 것은 두 컨텍스트가 아무 표식도 없이 동시에 도달 가능한 상태다. 두 개의 살아 있는 경로에 같은 주소가 둘이 있는 것이 펌웨어 업데이트를 엉뚱한 장비로 보내는 고장 모드다. 증상은 좀처럼 오류처럼 보이지 않고, 다른 누군가가 재구성한 장비처럼 보인다. 표식이 먼저, 도달 가능성은 그다음이다.

작업장에 자체 경계를 주기

수리를 위해 들어온 고객 장비는 명시적으로 허용된 접근을 가진 서비스 세그먼트에 속하며, 작업대 포트가 비어 있었다고 해서 직원 네트워크에 꽂는 것이 아니다.

낯선 산업용 장비는 또 다른 신뢰 도메인으로 다룬다. 어느 엔지니어링 호스트가 접근할 수 있는지, 그 호스트에 어떤 서비스가 필요한지, 어떤 자격 증명이 이 작업의 것인지 기록한다. 고객 파일은 누구나 읽을 수 있는 공유 드라이브가 아니라 고객 작업과 함께 보관한다.

격리는 작업의 지루한 중간 구간도 견뎌야 한다. 업데이트되는 동안, 밤새 놓여 있는 동안, 택배를 기다리는 동안이다.

경로는 작업 단계로 인계한다

보통 중앙 라우터는 고객의 터널을 통해 장비에 도달한다. 장비가 작업대 위에 있을 때는 작업장 경로가 그 프리픽스의 소유자가 되거나, 서비스가 하나만 필요하다면 더 좁은 목적지의 소유자가 된다.

이동 전에 세 가지를 적는다. 옛 경로, 새 경로, 그리고 변경을 되돌리는 방법이다. 누군가의 기억에만 존재하는 인계는 인계가 아니다.

메트릭을 조심한다. 더 낮은 메트릭은 선택 과정이 실제로 비교하는 경로들 사이에서만 의미가 있고, 더 구체적인 프리픽스나 정책 규칙은 메트릭을 보기도 전에 결과를 정할 수 있다.

오래된 세션도 계획에 넣는다. 옛 경로로 맺어진 연결은 경로가 바뀐 뒤에도 명령을 계속 전달할 수 있고, 하나의 주소에 대한 두 개의 사본이 실제 피해를 내는 상황이 바로 그때다. 타임아웃을 기다리는 대신 옛 경로를 명시적으로 닫는다.

장비가 출고될 때 고리를 닫기

의도한 원격 경로를 복원하고, 임시 권한을 제거하고, 선택되었다고 믿는 종단점에서 자산을 확인한다. 그다음 작업장에서만이 아니라 고객 쪽에서도 검증한다.

이름 해석과 인벤토리가 여기서 운영자 쪽 일을 한다. 안정된 이름과 검색 가능한 자산 기록은 작업을 예측 가능하게 만들고, 네트워크 계획은 장비가 오늘 어디에 있는지에 대해 정직하게 남는다.

좋은 인계의 시험은 그 작업을 한 번도 본 적 없는 동료가 당신의 메모를 읽고 한 가지 질문에 답할 수 있는지다. 이 장비가 지금 응답한다면 응답은 어느 경로로 왔는가. 메모가 그 답을 못 하면 인계는 문서화되었지만 끝난 것은 아니다.

관련 글