grep routing table & execute command

Я не понимаю второй шлюз по умолчанию, это значение по умолчанию, когда VPN не активен, это просто обходится?

Это один хаков OpenVPN для маршрутизации трафика через туннель с сохранением шлюза по умолчанию. Маршруты 0.0.0.0/1 и 128.0.0.0/1 имеют приоритет над маршрутом 0.0.0.0/0, поскольку они более конкретны, но при этом соответствуют всем адресам.Для получения более подробной информации поищите «def1» в документации OpenVPN

А как насчет 10.7.7.1? похоже, что это шлюз vpn ...

Вероятно, да

OpenVPN автоматически создает все эти правила. Но на основании чего они созданы?

Они, вероятно, выталкиваются с сервера. Я могу предоставить дополнительную информацию, если вы можете предоставить выходные данные своего клиента во время его запуска вместе с вашим файлом конфигурации

Я не могу контролировать серверную часть VPN, а только конфигурацию клиента.

Да, но клиент обладает широкими возможностями настройки, так что вы можете переопределить практически все, что сервер хочет, чтобы ваш клиент сделал. Тем не менее, для подключения вам необходимо соответствовать основным требованиям вашего провайдера. Вам также следует проверить «Условия использования» своих поставщиков, чтобы не разозлить их.

А что, если я хочу:

заставить весь трафик на 216.58.213.174 проходить через VPN tun0, а весь остальной трафик проходить через eth0?

Да, включите "route 216.58.213.174 255.255.255.255 10.7.7.125" в вашу конфигурацию. Это должно настроить желаемый маршрут. У вас должна быть возможность сохранить другие маршруты, удалив опцию «redirect-gateway» из своей конфигурации

, могу ли я установить ее автоматически при запуске VPN?

да, см. Выше

Все параметры варианты, которые я описал, и многое другое можно найти в онлайн-документации OpenVPN. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

-2
11.03.2019, 14:47
1 ответ

Есть несколько проблем с вашим скриптом.

Чтобы выполнить простую проверку «годен/не годен» с помощью grep, рассмотрите следующую идиому:

fail=$(route -n | grep -q '192.168.38.2'; echo $?)

Затем проверьте результат своей команды следующим образом:

if [ "$fail" -ne 0 ]; then
    # Handle failure
else
    # Handle success
fi

Эту идиому можно упростить до чего-то вроде:

if [ $(route -n | grep -q '192.168.38.2'; echo $?) ] then
   ...

или

route -n | grep -q '192.168.38.2'
if [ "$?" ]; then
   ...

Тем не менее, я бы рекомендовал потратить время на то, чтобы понять команды, которые вы используете, а не просто копировать то, что вы не понимаете (напримерgrep -v grep).

2
28.01.2020, 05:15

Теги

Похожие вопросы