Привязка SQUID прокси с VPN в сетевом пространстве имен

0

На моем сервере Ubuntu установлен прокси-сервер squid, он работает в конфигурации по умолчанию. У меня также есть сетевое пространство имен proxy1 с запущенным внутри openvpn (я использую такой скрипт для настройки сетевого пространства имен, http://www.naju.se/articles/openvpn-netns.html , а затем запустить ip netns exec proxy1 openvpn --daemon.. )

Можно ли запустить squid, чтобы он использовал соединение vpn, работающее в указанном сетевом пространстве имен, так как это tcp_outgoing_something?

В идеале я хотел бы иметь несколько соединений vpn одновременно в разных пространствах имен, например, usa vpn в usaNamespace и german vpn в germanyNamespace и для каждого определенного конкретного порта, чтобы myproxyserver: usaPort использовал usa vpn и myproxyserver: germanyPort будет использовать germany vpn. Является ли это возможным?

Kasheftin
источник

Ответы:

2

Было бы возможно запустить squid в вашем сетевом пространстве имен, если бы systemd разрешал запуск процессов в именованных сетевых пространствах имен. Увидеть https://github.com/systemd/systemd/issues/2741 Похоже, что это не исправить. Тем не менее, есть некоторые обходные пути, перечисленные там.

В качестве альтернативы вы можете запустить squid в сетевом пространстве имен по умолчанию и использовать tcp_outgoing_address, задав IP-адрес туннеля в ваше сетевое пространство имен. Затем используйте политику маршрутизации (правило ip), чтобы установить маршрут по умолчанию через пространство имен vpn / network для трафика, исходящего с этого IP-адреса.

Вам вообще не нужно пространство имен сети; пока ваш vpn делает не Заменив свой основной маршрут по умолчанию, вы можете использовать политику маршрутизации, чтобы установить маршрут по умолчанию через VPN для трафика, который приходит с вашего IP-адреса в VPN. Это хорошо работает, если у вас один и тот же IP-адрес каждый раз в VPN.

например

systemctl запускает openvpn

отредактируйте / etc / iproute2 / rt_tables:

...
101     vpn1 

затем

ip route add default via 192.168.0.1 table vpn1 (# where 192.168.0.1 is the remote gateway IP on the VPN)
ip rule add from 192.168.0.99 lookup vpn1 (# where 192.168.0.99 is the local IP address on the VPN)

Отредактируйте /etc/squid3/squid.conf:

...
tcp_outgoing_address 192.168.0.99 [[!]aclname] ...
...

(Используйте squid acls для выбора трафика, который вы хотите пройти через VPN)

Вы можете использовать ту же технику с именованным сетевым пространством имен, что позволяет работать даже на локальных и удаленных IP-адресах при изменении VPN. В этом случае вам нужно настроить nat / masquerading в пространстве имен и туннель между пространством имен по умолчанию и пространством имен VPN. В этом случае туннель будет иметь статические IP-адреса, которые вы назначаете, чтобы обойти динамические IP-адреса, назначенные VPN.

AlexKing
источник