LINUX.ORG.RU

Update DNS+openvpn

 , , ,


0

2

Есть OpenVPn сервер, и bind. Как сделать обновление (добавление) в DNS при подключении клиента к OpenVPN? Нашел скрипт, но не пойму как его запускать? up\down как я понял запускается только при старте остановке/сервера. client-connect в качестве $1 передает файл для параметров вновь подключаемого клиента. Но судя по скрипту (взят с openvpn.net) есть место от куда при запуске передаются ip имя и т.д ($1 $2 $3). Но не могу понять где это?

#!/bin/bash

DNSSERVER=	## your DNS server
FWDZONE=	## forward resolution zone (ie. vpn.company.com)
REVZONE=	## reverse resolution zone (ie. "1.0.0.in-addr.arpa")
NSUOPTS=	## extra arguments for nsupdate (ie. "-k /path/to/key")


reverseRecord() {
	echo $1 | sed -re
	's/^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$/\4.\3.\2.\1.in-addr.arpa/'
}


addRecord() {
	TEMPFILE=$(mktemp /tmp/nsupdate.XXXXXX) cat >$TEMPFILE <<EOF
server $DNSSERVER
zone $FWDZONE
update delete $CN A
update add $CN 3600 A $ADDRESS
send
EOF
	nsupdate $NSUOPTS $TEMPFILE
	cat >$TEMPFILE <<EOF
server $DNSSERVER
zone $REVZONE
update delete $REVERSE PTR
update add $REVERSE 3600 PTR $CN.
send
EOF
	nsupdate $NSUOPTS $TEMPFILE
	rm -f $TEMPFILE
}


removeRecord() {
	TEMPFILE=$(mktemp /tmp/nsupdate.XXXXXX) cat >$TEMPFILE <<EOF
server $DNSSERVER
zone $FWDZONE
update delete $CN A
send
EOF
	nsupdate $NSUOPTS $TEMPFILE
	cat >$TEMPFILE <<EOF
server $DNSSERVER
zone $REVZONE
update delete $REVERSE PTR
send
EOF
	nsupdate $NSUOPTS $TEMPFILE
	rm -f $TEMPFILE
}


case "$script_type" in
	learn-address)
		OPERATION=$1
		ADDRESS=$2
		CN=$3


		REVERSE=$(reverseRecord $ADDRESS)


		case "$OPERATION" in
			add|update)
				addRecord
				;;
			delete)
				removeRecord
				;;
			*)
				echo "ERROR: don't know operation \"$OPERATION\"." exit 1
		esac
		;;
	*)
		echo "\"${script_type}\" not handled"
esac


Последнее исправление: DeeZ (всего исправлений: 2)

ddclient.conf

## ddclient configuration file
daemon=600
# check every 600 seconds
syslog=yes
# log update msgs to syslog
#mail-failure=your-mail@server.com # Mail failed updates to user
pid=/var/run/ddclient.pid
# record PID in file.
## Detect IP with our CheckIP server
use=web, web=checkip.dyndns.com/, web-skip='IP Address'
## DynDNS username and password here
login=your-user-name
password='your-password'
## Default options
protocol=dyndns2
server=members.dyndns.org
## Dynamic DNS hosts
your-domain-name.com

daemonpnz ★★★★★
()
Ответ на: комментарий от daemonpnz

Мне не нужен DynDNS Клиент. мне нужно что бы при подключении сам сервер обновлял зону на моем bind сервере.

DeeZ
() автор топика
Ответ на: комментарий от DeeZ

тогда убери его из тегов и не вводи людей в заблуждение

daemonpnz ★★★★★
()

А может сделать так, что бы адреса выдавал dhcpd? Тогда будет проще и не так велосипедно настроить динамическое обновление зоны named. Если конечно отсутствие/наличие моста не принципиально.

v0mqfish ★★★
()

man openvpn:

--client-connect script
              Run script on client connection.  The script is passed the  com-
              mon  name  and  IP  address  of the just-authenticated client as
              environmental  variables  (see  environmental  variable  section
              below).

В общем, сделайте скрипт из команды «set > /tmp/openvpn.env» пропишите его в конфиг в --client-connect и узрите, что можно получить из этого скрипта.

mky ★★★★★
()
Ответ на: комментарий от v0mqfish

bridge

Это вариант.
Причем dhcpd+bind настроен, а tap0 уже в бридже. Как это организовать?
сейчас server-bridge 172.16.2.1 255.255.255.0 172.16.2.100 172.16.2.149

DeeZ
() автор топика
Ответ на: комментарий от mky

не, там переменные самого сервера. от клиентов почти ничего нет.

DeeZ
() автор топика
Ответ на: bridge от DeeZ
              For example, server-bridge 10.8.0.4 255.255.255.0 10.8.0.128 10.8.0.254 expands as follows:

                  mode server
                  tls-server

                  ifconfig-pool 10.8.0.128 10.8.0.254 255.255.255.0
                  push "route-gateway 10.8.0.4"

              In another example, --server-bridge (without parameters) expands as follows:

                  mode server
                  tls-server

                  push "route-gateway dhcp"

              Or --server-bridge nogw expands as follows:

                  mode server
                  tls-server

Вроде как просто server-bridge без параметров

v0mqfish ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.