我在一家医院工作,他们使用192.168.0.0/23建立他们的网络(在我到达之前).我们希望笔记本电脑和移动客户端使用VPN从远程位置连接,但医院网络与大多数家用路由器发生冲突.我已迫使管理层给我们时间来改变它,但作为一家医院,服务器/设备/等等到处都是无法安排的.所以我们通过使用10.22.0.0/23的1:1 nat来“解决”这个问题.
问题:客户端可以使用10.22.0.0/23 IP连接和访问资源而不会出现问题,但如果他们查询DNS服务器,则会收到192.168.0.0/23响应.如果查询来自VPN子网,BIND中是否有正确的方法将这些转换为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上读了一下,但信息似乎不稳定.谁能指出我正确的方向?如果没有,你能让我的解决方案更优雅吗?
编辑:我只想表明我已经在使用BIND视图,但我正在使用两个区域.我在第一个区域生成第二个区域,通过sed发送它来更改IP,并在该视图中对该区域执行rndc重新加载.这有很大的延迟,有没有办法在两个视图中使用相同的区域文件,并在查询时更改DNS响应?
谢谢!
解决方法
假设您的记录如下所示:
$ORIGIN db.company.local.net. test1 IN A 10.22.0.1 test2 IN A 10.22.1.255
在192空间视图的视图选项中,定义以下响应策略:
options { response-policy { zone "192remap.rpz"; }; } zone "192remap.rpz" { type master; file "192remap.rpz.zone"; };
响应策略将用于将所有10个空间IP重写为192space.这与任何其他区域文件一样,但NS记录没有意义,记录具有特殊含义.由于手动写出每个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响应的ANSWER部分中的任何10.22.0.0/23 IP,而且还会捕获出于任何原因出现在AUTHORITY或ADDITIONAL部分中的任何偷偷摸摸的IP.对test1.db.company.local.net的请求. (10.22.0.1)应将其回复重写为192.168.0.1,并且仅针对访问192空间视图的客户端.
希望这会有所帮助,如果有效,请告诉我们.您可以在几个月前写的another answer中找到有关RPZ的更多信息以及指向文档的链接.