python中的dns服务器将openvpn状态文件作为dns区域

openvpn2dns的Python项目详细描述


openvpn 2 dns
==


生成状态


提供openvpn状态文件内容的纯python dns服务器。它分析openvpn服务器的状态文件,提取连接的客户机及其ip地址。openvpn2dns从这些数据中创建dns
区域并将其作为dns服务器(使用python的twisted模块)。

如果
,因此可以用作主服务器。


-`` twisted`` python模块<;https://pypi.python.org/pypi/twisted/>;`` python
-版本>;=10工作
-`` ipy`` python模块<;https://pypi.python.org/pypi/ipy/>;``最低版本>;=0.73工作

o在大多数系统中,所有依赖项都可以通过包管理器获得-
查找诸如``python`/``python2``/``python2.7``、
``python twisted`/``python twisted names``和``python ipy``之类的包名称。twisted包包含多个子模块,但openvpn2dns只需要
core部分和names子模块。您不需要
安装整个套件。


目前openvpn2dns只能通过source获得(但我管理
考虑构建debian/ubuntu包),例如:





git clone git://github.com/mswart/openvpn2dns.git

ip install-r requirements.txt

pip install twisted ipy

每个节的ME。

``选项``节-常规选项
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-**侦听**:指定DNS服务器应在哪个地址和端口上侦听。必须指定A端口(DNS默认端口为53)。这个
选项可以指定多次。
-**实例**:定义一个openvpn实例(应该提供一个
的状态文件)。值是区域的名称和包含此实例以上选项的节

-**守护进程**:是否分离并作为守护进程运行
-**删除权限**:是否在打开套接字后删除权限。
需要用户和组信息(通过选项或配置)
-**用户**:在
打开套接字之后删除权限时要使用的用户ID或名称(请参阅删除权限选项)
-**组**:在
打开套接字之后删除权限时要使用的组ID或名称(请参阅删除权限选项n)
-**log**:日志目的地(文件名,stdout的``-`,syslog的`

-**pidfile**:pidfile的名称,建议用于守护进程模式
-**reactor**:twisted的twisted reactor类型

instance section
~~~~~~~~~~~~~~~~~~

此部分用于设置区域,例如,
区域的"soa"条目。证券交易委员会必须指定操作及其所有选项。

-**rname**:指定此区域负责人的邮箱。
-**mname**:此区域的原始或主要数据源的名称服务器的邮箱。
-**刷新**:刷新区域之前的32位时间间隔(秒)。支持像"h"、"d"这样的字符串后缀。
-**重试**:应在失败的刷新之前经过32位时间间隔。支持像"h"、"d"这样的字符串后缀。
-**expire**:一个32位时间值,指定在区域不再具有权威性之前可以经过的
时间间隔的上限。支持像"h"、"d"这样的字符串后缀。
-**minimum**:应该用该区域的任何rr导出的无符号32位最小ttl字段。支持诸如"h"、"d"等字符串后缀。


对于OpenVPN服务器。如果设置openvpn2dns
,则还提供反向查找。
-**子网6**:openvpn服务器的ipv6子网。如果设置openvpn2dns
,则还提供反向查找。


它们可以直接指定或从openvpn服务器提取
配置:

-**服务器配置**:openvpn配置文件的路径。
提取**状态文件**、**子网4**和**子网6**的值。


以下选项是可选的:

-**通知**:作为从属服务器和sho可以通过上述区域更新的dns notify扩展通知。此选项可以指定多次。
-**添加项**:应将记录添加到该实例的区域中的一个项节的名称。
-**添加转发项**:应将记录添加到fo中的一个项节的名称此实例的rward区域。
-**添加"向后"条目**:应将记录为
的一个条目节的名称添加到此
实例的向后区域(IPv4和IPv6)。
-**添加"向后"条目**:记录为应添加到此实例的向后区域(仅IPv4)。
-**添加"向后"6个条目**:应将记录的一个条目节的名称添加到此实例的向后区域(仅IPv6)。
-**后缀**:应为附加到所有证书
公用名-如果公用名不是完全限定的
域名,则需要。快捷方式"`@`"引用区域名称。

条目部分-其他(静态)dns条目
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

此部分包含应添加到TATAL文件。这应该是管理项,例如
名称服务器(ns)或vpn服务器的项。

选项名称是记录名称。如果名称没有以点结尾,则会附加区域名称。`@``表示区域名本身。

支持所有常见类型,如``a`,``aaaa`,``mx`,``ns`。

示例
~代码::ini

[选项]
运行设置:
listen=192.0.2.1:53
listen=198.51.100.1:53
ify从机:
notify=dns.example.org
notify=dns backup.example.com
区域soa选项:
rname=dns@example.org
mname=vpn.example.org
refresh=1h
retry=5m
expire=2h
最小值=5m
其他区域条目:
添加条目=名称服务器
添加条目=VPN服务器
[名称服务器]
@=ns dns.example.org
@=ns dns backup.example.com
[VPN服务器]
@=a 203.0.113.1


;配置文件,如openvpn2dns.ini>;

大多数选项设置可以由命令行选项指定。要获得完整的列表并运行帮助,请执行以下操作:






----

``openvpn2dns``是稳定的,可用于生产服务。

要处理更高的查询计数,请将openvpn2dns作为隐藏的主dns运行
服务器,并使用优化的dns服务器来处理查询负载。
``openvpn2dns``支持区域传输,``notify``选项将
机会快速推送到从属服务器。

服务器是用python编写的,因此不太可能存在安全漏洞。
但为了确保指定"user"和"group",并将"drop privileges"设置为"true":进程在打开网络套接字后将删除所有特权。
/>
**警告:**``openvpn2dns``没有访问控制。所有客户端都可以从dns区域查询每个数据或传输整个区域。调整
防火墙以阻止不需要的连接。

``scripts``目录包含一个``upstart``和一个``init.d`
脚本。你可以复制它们。您可能需要替换脚本中的launch和
配置路径。

**信息:**通过命令行参数传递``init.d``passes``--daemon=yes``和
`--pidfile=/var/run/openvpn2dns.pid``配置文件无效。

分叉
2.创建功能分支(``git checkout-b my new feature``)
3。为您的功能添加规格
4。实现您的功能
5。提交更改(``git commit-am'添加一些功能'``)
6。推到分支(`` git push origin my new feature``)
7。创建新的拉取请求

许可证
----



版权所有(C)2013 Malte Swart。麻省理工学院许可证,请参阅许可证以了解更多详细信息。|构建状态图像::https://travis-ci.org/mswart/openvpn2dns.png?branch=master
:目标:https://travis-ci.org/mswart/openvpn2dns

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java调用看起来模棱两可,但在意外的输出下运行得很好   java Spring工具套件:导入Spring入门内容时出错   javasocket在不接受连接的情况下侦听?   java无法将camel服务部署到jboss Fuse   使用java将jdbc结果集设置为文本文件   编辑JTable时java向量类类型的更改   java使用递归和二叉树计算算术表达式   java如何基于用户输入运行一组代码   java Jetty ServletTester类打包在哪里?   从一定的旋转位置发射子弹   java谷歌Foobar数字站   java LibGDX textfield输入导致崩溃   在Android Java中,公共阵列列表的大小在两个地方显示不同   RESTJava。lang.NoClassDefFoundError:org/eclipse/jetty/server/Handler   java将颜色更改为<ice:commandLink>   ArrayList Java的ints输入列表   如何使用Gson将JSON映射转换为自定义Java列表?   java调用用@Cacheable(org.springframework.cache.annotation.Cacheable)注释的方法   java ServletContext getContextPath()