LAN을 동일한 서브넷에 있는 게이트웨이에 연결하기 위해 Ubuntu에 브리지가 설정되어 있습니다. 트래픽을 제어하려면 이것이 필요하며 현재 서브넷을 변경할 수 있는 위치에 있지 않으므로 대신 라우팅할 수는 없습니다.
게이트웨이는 192.168.0.0/16 내의 다양한 다른 /24 서브넷에 MPLS를 제공하는 ISP를 통해 제어됩니다.
현재 설정은 다음과 같습니다.
192.168.10.1 (gw) <-> eth0 <-> br0 (192.168.10.3) <-> eth1 <-> LAN (192.168.10.0/24)
br0 Link encap:Ethernet HWaddr ..
inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
eth0 Link encap:Ethernet HWaddr ..
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr ..
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
이는 잘 작동하며 아무런 문제도 일으키지 않습니다.
또한 브리지의 일부가 아닌 동일한 서버(192.168.10.3)에 데이터 센터 인프라에 대한 Tinc VPN이 있습니다. 즉:
tincvpn Link encap:Ethernet HWaddr ..
inet addr:192.168.10.3 Bcast:192.168.255.255 Mask:255.255.0.0
...
특정 대상(예: 192.168.5.0/24)에 대해 LAN에서 브리지를 통과하는 패킷의 라우팅을 재정의하여 Tinc를 통해 이동하도록 하고 싶습니다. 즉, LAN의 192.168.10.x에서 192.168.5.x로의 연결은 게이트웨이가 아닌 Tinc를 통해 이동해야 합니다.
우리는 아무것도 구성하지 않고도 LAN의 모든 시스템에서 작동하기를 원하지만 현재는 LAN의 각 PC/서버에 다음 정적 경로를 추가하는 해결 방법을 찾았습니다.
route add -net 192.168.5.0/24 via 192.168.10.3 dev eth0
정적 경로가 작동하려면 192.168.10.3의 모든 인터페이스에 대해 Proxy_arp도 활성화해야 했습니다.
다음 구성을 시도했지만 작동하지 않았습니다.
ip rule add fwmark 20 lookup 20
ip route add 192.168.0.0/16 dev tincvpn table 20
ebtables -t broute -I BROUTING -i eth1 -p ipv4 --ip-dst 192.168.5.0/24 -j REDIRECT --redirect-target DROP
iptables -t mangle -I PREROUTING -i eth1 -d 192.168.5.0/24 -j MARK --set-mark 20
이 설정을 사용하면 패킷이 맹글 규칙에 도착하여 표시되었지만 Tincvpn 인터페이스로 라우팅되지 않았습니다.
우리는 ebtables를 사용하여 브리지 밖으로 패킷을 삭제한 다음 정책 기반 라우팅을 사용하여 패킷이 Tinc를 통과하도록 해야 한다는 것을 이해했습니다. 이 이해가 맞나요?
왜 이것이 작동하지 않았는지에 대한 아이디어가 있는 사람이 있다면 감사하겠습니다.
정말 감사합니다,
톰