我正在尝试让 DNS 代理功能在 SSG5(B 侧)中运行。VPN 的另一面是 SSG140(A 面)。DNS 服务器在 A 侧。
foo.com 应该将 DNS 查询发送到 192.168.1.2(A 侧)。
其他所有内容 (*) 应向 8.8.8.8 发送查询
- 当 B 端的主机 PC 直接向 192.168.1.2 查询 foo.com 时,它会解析。
- 如果主机向 SSG5 查询 *,它会解析。
- 如果主机尝试向 SSG5 查询 foo.com,则无法解析。
我正在尝试让 DNS 代理功能在 SSG5(B 侧)中运行。VPN 的另一面是 SSG140(A 面)。DNS 服务器在 A 侧。
foo.com 应该将 DNS 查询发送到 192.168.1.2(A 侧)。
其他所有内容 (*) 应向 8.8.8.8 发送查询
- 当 B 端的主机 PC 直接向 192.168.1.2 查询 foo.com 时,它会解析。
- 如果主机向 SSG5 查询 *,它会解析。
- 如果主机尝试向 SSG5 查询 foo.com,则无法解析。
不看图很难说,但我怀疑发生的事情是B侧正在使用隧道的接口地址(或底层外部接口的借用地址)作为DNS请求的源地址(例如:来自B 侧的“代理”到 192.168.1.2)并将其发送到隧道中。
当 B 方看到这一点时,它会响应 DNS 请求,但通过它的“不信任”而不是隧道接口将其发送出去(因为隧道很可能没有返回 B 方外部接口地址的路由),然后被 B 侧丢弃,因为它进入了错误的区域。
自从我使用 ScreenOS 已经很长时间了,但是有几种方法可以解决这个问题:
如果存在此类选项,请更新 DNS 代理的源地址/接口,使其使用 LAN 侧接口(例如:B 侧的网络,可通过来自 A 侧的 VPN 隧道进行路由)。乍一看这似乎违反直觉,但您实际上是在寻找源地址,而不是接口所面临的“方向”。
为双方的隧道接口分配一个 /30 并确保您的 DNS 服务器可以访问它 - 这样当 B 端发起它的 DNS 请求时,它将使用新的可路由隧道接口地址,而不是从底层借来的地址界面
[警告:肮脏的黑客] 从 B 侧的“LAN”侧分配一个未使用的地址到 B 侧的隧道接口 - 这将获得与 2. 相同的结果,但您不必进行任何路由更改。