DD-WRT (pptp-клиент): автоматически добавлять маршруты и информацию DNS при подключении к VPN? - PullRequest
3 голосов
/ 08 апреля 2011

Я использую PPTP-клиент DD-WRT для подключения к VPN.На странице конфигурации клиента Services / PPTP я указал удаленную подсеть 192.168.112.0 и маску 255.255.255.0.

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

Я считаю, что VPN-сервер должен отправлять списокмаршрутов, потому что когда я использую Windows XP для подключения к VPN, маршруты для всех этих подсетей автоматически добавляются в таблицу маршрутизации.

Есть ли способ, чтобы DD-WRT автоматически добавлял эти маршруты, когда соединениесоздана?То есть, если бы сетевая конфигурация за VPN-сервером изменилась, мне не пришлось бы вручную редактировать таблицу маршрутизации на моем DD-WRT.

То же самое для DNS-сервера, есть ли способ избежать вручнуювходить в DNS-сервер для использования для VPN-подключения?

Ответы [ 2 ]

2 голосов
/ 23 марта 2013

Когда ppp-соединение запускает этот скрипт:

/etc/ppp/ip-up

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

#!/bin/sh
# This script is run by pppd after the link is established.
# It executes all the scripts available in /etc/ppp/ip-up.d directory,
# with the following parameters:
# $1 = interface name (e.g. ppp0)
# $2 = tty device
# $3 = speed
# $4 = local IP address
# $5 = remote IP address
# $6 = ipparam (user specified parameter, see man pppd)
ifconfig $1 mtu 1280 || true

cd /etc/ppp/ip-up.d || exit

for SCRIPT in *.sh ; do
        . ./"${SCRIPT}" "$@"
done

в папке /etc/ppp/ip-up.d У меня есть файл с именем 40-dns.sh.Выглядит это так, и он устанавливает /etc/resolve.conf с DNS-серверами, отправляемыми VPN-сервером

#!/bin/sh    
# Handle resolv.conf generation when usepeerdns pppd option is being used.
# Used parameters and environment variables:
# $1 - interface name (e.g. ppp0)
# $USEPEERDNS - set if user specified usepeerdns
# $DNS1 and $DNS2 - DNS servers reported by peer

if [ "$USEPEERDNS" ]; then

        if [ -x /sbin/resolvconf ]; then
                {
                        echo "# Generated by ppp for $1"
                        [ -n "$DNS1" ] && echo "nameserver $DNS1"
                        [ -n "$DNS2" ] && echo "nameserver $DNS2"
                } | /sbin/resolvconf -a "$1"
        else
                # add the server supplied DNS entries to /etc/resolv.conf
                # (taken from debian's 0000usepeerdns)

                # follow any symlink to find the real file
                REALRESOLVCONF=$(readlink -f /etc/resolv.conf)

                if [ "$REALRESOLVCONF" != "/etc/ppp/resolv.conf" ]; then

                        # merge the new nameservers with the other options from the old configuration
                        {
                                grep --invert-match '^nameserver[[:space:]]' $REALRESOLVCONF
                                cat /etc/ppp/resolv.conf
                        } > $REALRESOLVCONF.tmp

                        # backup the old configuration and install the new one
                        cp -dpP $REALRESOLVCONF $REALRESOLVCONF.pppd-backup
                        mv $REALRESOLVCONF.tmp $REALRESOLVCONF

                        # correct permissions
                        chmod 0644 /etc/resolv.conf
                        chown root:root /etc/resolv.conf
                fi
        fi

fi

Для маршрутов, которые должны быть помещены в таблицу маршрутизации при установленном соединении, вы должны быть в состоянии сделатьПодобный трюк.Перейдите на справочные страницы pppd, чтобы увидеть имена переменных, которые вам нужно использовать.

Это примеры кода с моего ПК с Gentoo Linux, но этот материал является общим для Linux, поэтому он будет работать и на DD-WRT.

1 голос
/ 28 марта 2014

Хотя предыдущий ответ верен для linux в целом, вы не можете редактировать или добавлять файлы, которые легко могут быть установлены на некоторых маршрутизаторах ddwrt.

Все 4 маршрутизатора ddwrt, которые я использую, генерируют эти файлы при запуске клиента pptp, делая невозможным просто изменение или добавление файлов.

Вот обходной путь, который, кажется, работает на большинстве маршрутизаторов http://stadar.org/content/ddwrt-pptp-client-add-routes-after-connection

...