Hello Server 错误 ,
我为一家使用192.168.0.0/23(在我到达之前)build立networking的医院工作。 我们希望笔记本电脑和移动客户端使用VPN从远程位置连接,但医院networking与大多数家庭路由器相冲突。 我向pipe理层施加压力让我们有时间去改变它,但是到处都是服务器/设备等的医院,这是不可能安排的。 所以我们通过使用10.22.0.0/23的1:1 nat来“解决”这个问题。
问题:客户端可以使用10.22.0.0/23 IP连接和访问资源,但是如果他们查询DNS服务器,则会收到192.168.0.0/23响应。 如果查询起源于VPN子网,BIND中是否有正确的方法将这些dynamic地转换为10.22.0.0/23地址? 强调正确的,因为我有它通过在cron中使用以下BIND视图工作:
sed -e 's/192.168.0./10.22.0./' -e 's/192.168.1./10.22.1./' /var/lib/bind/db.company.local > /var/lib/bind/db.company.local.ext && /usr/sbin/rndc reload company.local in extView
这很好,但由于BIND日志需要大约15分钟的时间才能写回db.company.local文件,所以会延迟15到20分钟。
我已经读了一些关于RPZ的信息,但是这些信息似乎很多。 任何人都可以指向正确的方向吗? 如果没有,你可以让我的解决scheme更优雅?
编辑:我只想说清楚,我已经使用BIND的意见,但我做了两个区域。 我从第一个生成第二个区域,通过sed发送它来更改IP,然后在该视图中的该区域执行rndc重新加载。 这有一个很大的延迟,有没有办法在两个视图中使用相同的区域文件,并在查询时改变DNS响应?
谢谢!
这应该是一个过程问题。 通常pipe理员会将新logging添加到两个视图的区域文件中。 如果内存不好,强制他们使用脚本。 如果他们拒绝使用这些脚本的话,他们将受到惩戒。 但是,如果这是一个疯人院,你只需要这个工作,我想你可以用基于视图的响应策略来做到这一点。
假设你有这样的logging:
$ORIGIN db.company.local.net. test1 IN A 10.22.0.1 test2 IN A 10.22.1.255
在192space视图的视图选项中,定义以下响应策略:
options { response-policy { zone "192remap.rpz"; }; } zone "192remap.rpz" { type master; file "192remap.rpz.zone"; };
将使用响应策略将所有10space IP重写为192space。 这就像任何其他区域文件,但NSlogging是无意义的,logging有特殊的含义。 由于手写每个IP地址重映射将是一件苦差事,我们将使用$GENERATE块为您填充区域文件。
@ IN SOA localhost. root.localhost. ( 2 ; serial 3H ; refresh 1H ; retry 1W ; expiry 1H) ; minimum IN NS localhost. ; 32.$.0.22.10.rpz-ip. -> 10.22.0.$/32 $GENERATE 0 255 32.$.0.22.10.rpz-ip. A 192.168.0.$ $GENERATE 0 255 32.$.1.22.10.rpz-ip. A 192.168.1.$
这不仅会重新映射在DNS响应的答案部分中find的这些10.22.0.0/23 IP中的任何IP,还会捕获出于任何原因在AUTHORITY或ADDITIONAL部分中显示的任何偷偷摸摸的IP。 请求test1.db.company.local.net. (10.22.0.1)的应答应该被重写为192.168.0.1,并且只能用于打192个空间视图的客户端。
希望这有助于,让我们知道如果它的工作。 你可以在几个月前写的另一个答案中find关于RPZ的更多信息和链接。
是的,你可以用绑定视图来做到这一点:
基本上,您将每个视图定义为一个子网,然后每个视图维护自己的区域文件。 取决于dns查询的源IP /子网,你会得到不同的“视图”。
这对名称服务器在“内部”/“外部”视图中使用是很常见的,因此dns名称在外部视图上公开parsing,但在从内部查询时,parsing内部局域网上主机的专用IP私人局域网。