브리지에서 특정 인터페이스로 트래픽 라우팅

브리지에서 특정 인터페이스로 트래픽 라우팅

Ubuntu 20.04의 라우팅에 대한 근본적인 질문입니다.

Hetzner에는 11.22.33.44/32 IPV4 주소와 2a01:db8:30/64 서브넷이 할당된 베어메탈 설정이 있습니다.

enp7s0은 11.22.33.44/32 주소를 갖는 물리적 인터페이스입니다.

또한 공용 서브넷 2a01:1111:2222:3333::/64가 할당된 vSwitch에 베어메탈 서버가 연결되어 있습니다. 이 서브넷의 게이트웨이는 2a01:1111:2222:3333::1이며 vlan.4001 인터페이스(VLAN 태그 ID가 4001인 enp7s0의 하위 인터페이스)를 통해 액세스할 수 있습니다.

내 설정에서는 IP 주소 2a01:1111:2222:3333::10/64를 사용하여 br1이라는 호스트에 브리지가 생성됩니다. 이 브리지에 여러 VM이 생성되고 각 VM에는 2a01:1111:2222:3333::/64 IPV6 서브넷에서 할당된 IPV6 주소가 있습니다. 브리지를 사용해야 하는데 다양한 요구사항으로 인해 다른 옵션이 없습니다.

br1에 있는 VM은 서로 및 br1과 통신할 수 있습니다. vlan.4001을 통해 br1에서 외부 세계로 모든 트래픽을 라우팅하고 싶습니다. vlan.4001 인터페이스를 br1에 ​​추가하고 싶지 않습니다(VM MAC 주소가 vSWitch에 노출되는 것을 원하지 않습니다). 주소 2a01:1111:2222:3333::2/64를 vlan.4001에 할당했지만 br1에서 vlan.4001 인터페이스로 트래픽을 라우팅하는 방법을 찾는 데 어려움을 겪었습니다.

앞서 언급했듯이 브리지를 사용하여 호스트의 모든 VM을 2a01:1111:2222:3333::/64(VM에는 NAT가 허용되지 않음)로 연결해야 하며 여전히 VLAN을 통해 외부 인터넷에 액세스할 수 있습니다. .4001.

Ubuntu 20.04를 사용하여 이 설정이 가능합니까?

나도 그럴 거야~ 아니다VRF 또는 netns를 사용할 수 있지만 둘 다 다른 요구 사항으로 인해 제외됩니다.

내가 가진 유일한 옵션은 정책 기반 라우팅을 사용하는 것이지만 외부 트래픽에 vlan.4001 인터페이스를 사용하기 위해 2a01:1111:2222:3333::/64에 대한 PBR을 생성할 수 없습니다.

답변1

브리지는 경로가 지정되지 않습니다. 브리징은 레이어 2에서 발생하고 라우팅은 레이어 3에서 발생합니다. VM을 연결하는 내부 네트워크(br1로 구현)와 인터넷 연결(vlan.4001) 사이를 라우팅할지 브리징할지 결정해야 합니다. 어느 선택이든 특정한 결과가 따릅니다.

브리징을 선택하면 VM은 게이트웨이 2a01:1111:2222:3333::1과 직접 통신하여 MAC 주소를 해당 게이트웨이와 중간 레이어 2 네트워크에 노출합니다. 반면에 이 솔루션은 매우 간단하므로 더욱 안전하고 안정적입니다.

라우팅을 선택하는 경우 VM과 외부 인터페이스 사이에 라우팅 인스턴스가 필요하며 해당 라우팅 인스턴스를 호스터의 게이트웨이 라우터에 연결하려면 자체 IPv6 주소 범위가 있는 별도의 네트워크 세그먼트가 필요합니다. 따라서 Hetzner에게 내부 라우터로 라우팅할 또 다른 /64를 요청하거나, 대안으로 직접 서브넷을 구성할 /56을 요청해야 합니다. 라우팅 인스턴스는 방화벽을 실행하는 전용 VM으로 구현하거나 베어메탈 서버의 OS로 구현할 수 있습니다.

Ubuntu 20.04를 사용하든 다른 OS를 사용하든 해당 수준에서는 작동하지 않습니다. 어떤 솔루션을 선택하든 Ubuntu는 물론 다른 OS에서도 구현할 수 있습니다.

관련 정보