У меня есть два шлюза с разными провайдерами, один из которых определен по умолчанию для пользователя LAN, а другой ISP используется по умолчанию для серверов и трафика VPN. Это делается с помощью обычных таблиц маршрутизации, настроенных с помощью DHCP.
Теперь я хочу, чтобы диск Google и некоторый другой трафик программного обеспечения были установлены на ноутбуках пользователей локальной сети, которые используют много загрузок, чтобы всегда использовать другого интернет-провайдера, который не определен в качестве их gw по умолчанию. Как я могу этого добиться?
Мои первоначальные мысли - использовать IPTABLES или squid.
Я пытался с этим
iptables -t nat -A PREROUTING -d GOOGLE_IP -j DNAT --to-destination MY_SECOND_ISP
iptables -t nat -A POSTROUTING -s MY_SECOND_ISP -j SNAT --to-source GOOGLE_IP
iptables -t nat -A POSTROUTING -s MY_SECOND_ISP -j MASQUERADE
Но это не работает. Когда я тестирую, трафик идет на gw по умолчанию
Есть идеи, как это сделать с помощью iptables, shorewall или squid ??
Предполагается, что IP-адрес LAN по умолчанию GW (GW1) - 192.168.1.1, а IP-адрес LAN GW (GW2) по умолчанию - 192.168.1.2, т.е. LAN видит оба маршрутизатора в одном сегменте.
Вы можете настроить статический маршрут на GW1, который направляет трафик, получателем которого является GOOGLE_IP, на IP-адрес GW2 LAN следующего перехода.
Если GW1 - Cisco: ip route GOOGLE_IP 255.255.255.255 GW2_LAN_IP
Если GW1 - Linux: ip route добавить GOOGLE_IP / 32 gw GW2_LAN_IP
Таким образом, когда какой-либо хост в локальной сети отправляет трафик на GOOGLE_IP, этот трафик переходит на GW1.
Затем статический маршрут на GW1 будет перенаправлять трафик на GW2.
Затем GW2 перенаправит трафик из своего интерфейса WAN.
Обратный трафик, поступающий из Интернета на GW2, будет перенаправлен в локальную сеть и достигнет хостов.
Таким образом, вы создаете маршрут один раз на GW1, чтобы он работал для всех хостов LAN.
Поскольку такие сервисы, как Google Drive, находятся в облаке, и их IP-адреса могут измениться в любой момент, я считаю, что ваш подход рано или поздно перестанет работать.
Существует еще один способ дифференцировать трафик тех приложений, которые вам нужны, путем маркировки DSCP на уровне гостевой ОС.
Метки DSCP будут «прикреплены» к самим пакетам, так что вы сможете сопоставить эти пакеты с iptables на вашем маршрутизаторе и направить их через VPN или любой другой шлюз, который вам нравится.
Таким образом, вы говорите, что, например, googledrive.exe (или любое другое приложение, которое вы хотите) всегда будет маршрутизироваться через VPN, независимо от того, куда он пытается подключиться.
Вот несколько инструкций о том, как установить пользовательские метки DSCP с помощью Windows. https://support.timso.com/index.php?/Knowledgebase/Article/View/24/3/windows-7-and-implementing-qos
Вы можете сопоставить метки dscp с параметром --dscp match для iptables.
http://www.iptables.info/en/iptables-matches.html#DSCPMATCH
Конечно, все вышеперечисленное не отвечает на ваш первоначальный вопрос. Вам все равно нужно будет заставить работать маршрутизацию политик.