У меня есть Ubuntu 16.04, я установил там VPN, чтобы загрузить материал.
Теперь у меня есть приложение rclone, которое загружает данные в Amazon.
Возможно ли, что rclone не использует VPN, но все другие приложения используют его
В абсолютной общности, не представляется возможным установить маршрут для каждого приложения, даже в современных ПК. Однако существует большое количество частичных решений этой проблемы, различной степени сложности.
К счастью для вас, ваш случай является самым простым из возможных, потому что в основном у вас есть одно приложение, которое всегда подключается к одному и тому же IP-адресу. Вы делаете это следующим образом. Предположим, что после запуска VPN у вас есть таблица маршрутизации следующим образом:
# ip route show
0.0.0.0/1 via 10.8.0.5 dev tun0
default via 192.168.73.1 dev eth0 proto static metric 100
10.8.0.0/24 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
128.0.0.0/1 via 10.8.0.5 dev tun0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.73.0/24 dev eth0 proto kernel scope link src 192.168.73.66 metric 100
IPAddress.Of.Remote.VPN.Server via 192.168.73.1 dev eth0
и что ваше приложение rclone хочет подключиться к серверу с IP-адресом 1.2.3.4. Все, что вам нужно сделать, это добавить маршрут через шлюз по умолчанию (т. Е. Без шлюза VPN, 192.168.73.1 и выше) в 1.2.3.4:
sudo ip route add 1.2.3.4/32 via 192.168.73.1 dev eth0 src 192.168.73.66
(где я использовал свой интерфейс, который называется eth0, и IP-адрес моего компьютера, 192.168.73.66, вам придется адаптировать их к вашему конкретному случаю). Это просто указывает таблице маршрутизации обходить ваш виртуальный интерфейс, который выше называется tun0, но в вашем случае это может быть tap0, ppp0 или что-то подобное.
На самом деле, использованный принцип тот же, который я использовал в этом похожем, хотя и явно не связанном, ответе.