Selektywny routing przez wiele pfSense i OpenVPN
Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał
Załóżmy, że chcesz przepuścić ruch z lokalnego kontenera/VM przez jakiś zewnętrzny pfSense. Dzięki temu nie trzeba konfigurować VPN na każdym kontenerze, który chcesz objąć tą konfiguracją. W OpenVPN jest opcja przepuszczania całego ruchu przez tunel, ale psuje ona kilka innych rzeczy, zarówno lokalnie, jak i na zdalnym pfSense.
Mamy więc taką konfigurację sieci:

Zadaniem lokalnego zwirtualizowanego pfSense jest przepuszczanie ruchu. Ma więc tylko jeden interfejs, czyli WAN. Nie ma tam interfejsu LAN. Adresacja może być taka sama jak na lokalnym fizycznym pfSense.
Najpierw trzeba skonfigurować klienta OpenVPN (CA, certyfikat, użytkownik i połączenie), a następnie utworzyć przypisanie interfejsu na bazie tego połączenia. Będzie się nazywać mniej więcej ovpncX. Pamiętaj, że OpenVPN to nazwa zastrzeżona, więc interfejs musisz nazwać inaczej.
Aby wyróżnić ruch z LXC/VM, utwórz regułę pass ze źródłem ustawionym na ten LXC/VM i w ustawieniach zaawansowanych wskaż bramę klienta OpenVPN. Pamiętaj, aby umieścić tę regułę przed wszelkimi regułami typu catch-all. Gdy masz już klienta OpenVPN i regułę pass, przejdź do NAT outbound i ustaw manual outbound NAT, aby wprowadzić regułę ręcznie. Jako źródło użyj adresu LXC/VM i wybierz interfejs klienta OpenVPN.
Aby ruch z innego LXC/VM nie przechodził przez klienta OpenVPN, dodaj kolejną regułę NAT outbound (nie trzeba tu ustawiać reguły pass, bo używamy domyślnej bramy) i ustaw interfejs WAN oraz adres tego drugiego LXC/VM jako źródło.
Teraz jeden LXC/VM przepuszcza ruch przez zdalny OpenVPN (za pośrednictwem klienta OpenVPN), a drugi LXC/VM przepuszcza ruch normalnie przez WAN do drugiego fizycznego pfSense, a następnie do internetu. W ten sposób możesz zarządzać tym, jak Twój ruch wychodzi do publicznego internetu.