브리지 없는 TAP: 라우팅된 업링크를 갖춘 가상 세그먼트
TAP 장치는 Ethernet 세그먼트이지 브리지가 아니다. 주소를 부여하고, 그것과 사무실 프리픽스 사이를 라우팅하며, 브로드캐스트 범위를 의도적으로 유지하라.
TAP는 Ethernet 프레임을 운영 체제에 넘긴다. 이것은 대부분의 원격 접속 설계가 필요로 하는 것보다 큰 능력이고 브리지보다는 작다. 커널은 어떤 물리 세그먼트에도 연결하지 않고 그것에 주소를 주고, 그것을 통해 라우팅하고, 방화벽으로 보호할 수 있다. 이 구성은 먼저 이해할 가치가 있다. 서버가 실제 LAN을 향한 라우터 역할을 하는 격리된 가상 Ethernet 세그먼트다. 터널 안에서는 두 번째 계층 동작을, 밖에서는 보통의 IP 전달을 제공하는데, 이는 서로 다른 두 가지 약속이다. 나머지는 구축, 경로, 반환 경로, 롤백이다.
격리된 세그먼트 구축
Linux에서는 인터페이스가 세 가지 명령을 받는다: 만들고, 올리고, 의도한 세그먼트 안에서 주소를 준다. 사무실 LAN과 충돌하지 않는 프리픽스를 골라 적어 두어라, 충돌은 존재해서는 안 되는 호스트가 응답할 때까지 보이지 않는다.
ip tuntap add dev tap0 mode tap
ip link set tap0 up
ip addr add 10.77.0.1/24 dev tap0
여기서 브리지를 요구하는 것은 없고, 나중에 하나를 추가하는 것을 막는 것도 없다. 커널의 TUN/TAP 문서는 인터페이스 자체를 설명한다. 브리지 소속과 전달 정책은 나중에 내리는 별개의 결정이다.
경계를 넘어 라우팅
전달을 켜고, 전달 체인에서 두 프리픽스를 허용하고, LAN 라우터를 다음 홉으로 하여 사무실 프리픽스를 향한 경로를 추가하라. 그러면 VPN 쪽은 사무실로 향하는 트래픽을 자신의 게이트웨이로서 서버로 보내고, 서버는 그 패킷을 브리지가 아니라 자기 자신으로서 전달한다. 전달이 꺼진 TAP 인터페이스는 로컬에서 응답하고 그 너머로는 아무것도 닿지 않는 세그먼트이며, 흔한 반쯤 완성된 상태다. 나중에 양쪽의 인터페이스 카운터를 확인하라. LAN 쪽에서 전송 카운터가 평평한데 수신 카운터가 오르고 있다면 나쁜 경로가 아니라 전달 체인에서의 드롭이다.
경로와 방화벽 규칙을 하나의 변경으로 작성하라, 각각만으로는 클라이언트 쪽에서 라우팅 실패처럼 보이는 상태를 만들기 때문이다.
반환 경로 결정
LAN 라우터가 VPN 프리픽스로 돌아가는 경로를 학습하거나, 서버가 나가는 길에 출발지 주소를 변환한다. 변환은 반환 경로를 자명하게 만들고 출발지 정체성을 파괴하므로, 목적지 로그에는 그 뒤의 모든 클라이언트에 대해 서버의 주소가 표시된다. 라우팅된 프리픽스는 정체성을 유지하고, 관리하지 않을 수도 있는 장비에서의 변경을 요구한다.
어느 쪽이 입력하기 빠른지가 아니라 의도적으로 선택하라. 단일 라우팅 프리픽스는 보통 변환보다 깔끔하고, 하나의 실험실을 위해 관리되지 않는 라우터에 새 프리픽스를 가르치는 것보다 변환이 보통 낫다.
브로드캐스트 범위를 의도적으로 유지
가상 세그먼트 안에서는 DHCP, 발견, 이웃 공지가 스위치에서처럼 동작한다, 하나의 링크이기 때문이다. 라우팅된 경계 너머에서는 그렇지 않으므로, 사무실 DHCP와 서비스 발견에는 TAP이 그것들을 포함한다는 가정이 아니라 명시적인 설계가 필요하다. 인터페이스 유형은 다른 곳에 사는 서비스를 위한 중계기가 아니다.
TAP를 선택하는 정직한 이유는 이것이다. 가상 세그먼트의 무언가가 링크 로컬 동작을 필요로 한다. 아무것도 필요로 하지 않는다면 라우팅된 프리픽스를 가진 TUN 장치가 더 작고, 고장 났을 때 설명할 것도 적다.
검증한 뒤 롤백 작성
VPN 클라이언트에서 LAN 라우터에 ping하고, 호스트에 ping하고, TCP로 중요한 서비스 하나를 열어라. 그다음 카운터와 전달 체인을 확인하라, 정책 드롭은 멀리서 보면 정확히 빠진 경로처럼 보인다. 롤백은 구축의 반대이며 시작하기 전에 변경 기록에 속한다: 경로를 제거하고, 주소를 제거하고, 인터페이스를 삭제하라.
요구가 정말로 두 사이트에 걸친 하나의 Ethernet 세그먼트라면, 브리지가 정직한 답이고 영향 반경이 다른 다른 설계다. 요구가 도달성이라면, 라우팅된 업링크를 갖춘 격리 세그먼트가 나중에 설명할 것을 줄이며 일을 해낸다.