Я пытаюсь создать службу VPN, которая способна фильтровать только определенный веб-трафик HTTP/S через VPN, а другой трафик, не соответствующий моим критериям динамического фильтра, должен отправляться через шлюз по умолчанию.
Я знаю, что если я использую OpenVPN, я могу маршрутизировать трафик (уровни 2 и 3) определенных IP-адресов через VPN, а другие - через шлюз по умолчанию. Но мне нужно фильтровать трафик, похожий на работу HTTP-прокси. Я на самом деле пытаюсь создать свой собственный веб-прокси-сервер, но тот, который работает на системном уровне, а не на уровне браузера. Таким образом, даже если пользователи создают свой собственный клиент браузера и пытаются получить доступ к определенным URL-адресам, этот трафик можно направлять через VPN. Поэтому я подумал о создании VPN, способной захватывать весь трафик, исходящий от хоста, а не простого HTTP-прокси. Но теперь проблема заключается в том, как я могу фильтровать только трафик, который мне нужно отправить через VPN, проверяя запросы HTTP GET/POST. Поскольку для этого VPN необходим доступ к данным прикладного уровня, а не уровня 2 или уровня 3.
Поэтому, если я суммирую свои требования, я пытаюсь разработать собственный гибрид между устройством Web Proxy + VPN (TUN/TAP) .
- Это приложение / служба, которую пользователь устанавливает на своей машине, должно иметь возможность перехватывать весь трафик, исходящий от хоста.
- Он должен иметь возможность проверять запросы HTTP / HTTPS, сделанные из любого браузера или пользовательского клиента, и только тогда, когда эти запросы соответствуют определенным именам URL (например, www.facebook.com/*, www.linkedin.com/*, * .js, * .swf), этот трафик будет направляться через VPN.
- Если запросы не соответствуют условиям соответствия, они будут отправлены через интернет-шлюз пользователя по умолчанию.
- Условия соответствия URL могут быть многочисленными и могут быть изменены в любое время, чтобы они не были жестко запрограммированы.
Любые полезные советы (код, документация для плагинов OpenVPN, которые я могу написать, и т.д.) О том, как я могу этого достичь, или советы. Если я пытаюсь сделать это неправильно, мы будем очень благодарны.