Направьте клиенты OpenVPN к другому другому серверу OpenVPN

Меньше имеет очень мощное сопоставление образец. От страницы Page :

& Pattern

    отображает только линии, которые соответствуют шаблону ; Линии, которые не соответствуют шаблону , не отображаются. Если шаблон пустой (Если вы напечатаете & , а затем следуют ввод ), Любая фильтрация выключается, и все линии отображаются. Хотя фильтрация существует, Амперсанд отображается в начале подсказки, В качестве напоминания о том, что некоторые строки в файле могут быть скрыты.

    Некоторые символы особенные как в команде / :

    ^ N или !

      Отображение только линий, которые не соответствуют шаблону .
    ^ R
      не интерпретировать регулярные механизмы выражения; То есть сделать простое текстовое сравнение.

    ____________
    Некоторые символы специальные Если вносятся в начале модели ; Они изменит тип поиска вместо того, чтобы стать частью шаблона .

(конечно ^ n и ^ R Ctrl Ctrl + N и Ctrl + R , соответственно.)

Так, например, & DNS будут отображаться только строки, которые соответствуют шаблону DNS , и &! DNS будет отфильтровать (исключать) эти линии, Отображение только линий, которые не соответствуют шаблону.

Отмечено в описании команды / , что

    шаблон является регулярным выражением, Как признано обычной библиотекой экспрессии, предоставленной вашей системой.

Итак

  • & ETH [01] будут отображаться линии, содержащие ETH0 или ETH1
  • & ARP. * ETH0 будут отображаться линии, содержащие ARP с последующим ETH0
  • & ARP | DNS будут отображать линии, содержащие ARP или DNS

и ! может инвертировать любой из вышеперечисленных. Таким образом, команда, которую вы хотели бы использовать для примера в вашем вопросе:

&!event text|something else|the other thing|foo|bar

также используют / Pattern и ? Pattern для поиска (и N / N , чтобы перейти к следующему / предыдущему).

-121--7052-

Такое поведение зависит от опции «Выбор» . Кажется, у вас есть (не по умолчанию) ; С включительно , выбор включает в себя символ под курсором. Так что переключение того, что вариант будет одним решением.

Если вы хотите сохранить его, вы можете сделать ваш задом наперед, а затем использовать O $ или ol , чтобы вернуться к справа и расширить его пропуском символа.

Или : установить Virtualedit = OneMore . Это позволит вам выходить за пределы последнего символа в линии и начать выбирать оттуда: LV ...

Кроме того, доступные «внутренние» объекты текстовых объектов, часто получают потребность в явном выборе. Например, VIW выберет все последнее слово.

0
05.09.2014, 21:53
1 ответ

Я предполагаю, что вы хотите:

one specific secondary VPN server to become the default gateway for a given client.

Если это так, что можно сделать с помощью маршрута Push. Вы уже знаете, что вы можете сказать клиенту адрес своего «нового» шлюза после того, как соединение OpenVPN выросло.

Ну, вы можете сделать это динамически .

В Руководстве :

- Сценарий Client-Connect Запустите скрипт на клиентском соединении. Сценарий пропускается Общее имя и IP-адрес только что аутентифицированного клиента в качестве экологической Переменные (см. Экологическую переменную секцию ниже). Сценарий Также прошло путь к еще не созданному временному файлу как 1 доллар (то есть. Первый аргумент командной строки), для использования сценарием Пройдите динамически сгенерированные директивы файлов конфигурации обратно в OpenVPN .

Если сценарий хочет создать файл динамического конфигурации, который будет применен на сервере, когда клиент подключается, он должен написать его Файл с именем 1 $.

См. Вариант «PRIGN-CONFIG-DIR» ниже для параметров, которые могут быть законно использоваться в динамически сгенерированном файле конфигурации.

Обратите внимание, что Возвращаемое значение сценария значительно . Если сценарий возвращает ненулевое состояние ошибки, он приведет к отключению клиента.

Итак, все, что вам нужно сделать, это поддерживать список записей (Client-Commass name, default-Gateway) и подготовить Client-Connect скрипт , который проверит имя клиента и подготовит Соответствующие Push «Manager-Gateway ABCD» , которые будут отправлены на сервер OpenVPN и оттуда к клиенту.

Вы также можете поставить IP команд в скрипте, но, возможно, вам не нужны.

Например:

#!/bin/sh

# Connect script for OpenVPN. This is /usr/local/bin/openvpn-connect-script.sh
# and OpenVPN server requires the extra option
#
#     --connect-client /usr/local/bin/openvpn-connect-script.sh
#

$script="$1"

# We could even fetch this from, say, a MySQL database.
# GATEWAY=$( echo "SELECT gateway FROM users_config WHERE user='$username';" \
#     | mysql -N openvpn )

case "$username" in
    "lserni")
        GATEWAY=192.168.168.192
        ;;
    "apiraino")
        GATEWAY=192.168.170.133
        ;;
    "*")
        GATEWAY=192.168.172.1
        ;;
esac

cat <<-CONFIG > $script

# Extra options, user-dependant.

gateway $GATEWAY

CONFIG

exit 0
1
28.01.2020, 02:52

Теги

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