我有一台装有 Zentyal 3.0 (Ubuntu 12.04 LTS) 的服务器。我有 2 个网卡 ( eth0 - internet, eth1 - LAN
),一个 DNS ( sz**.myftp.org
)。
portforward 可以工作,但是当我从 LAN 请求 DNS 地址或外部 IP 地址时,它无法联系服务器。 (当我从外部这样做时,它可以联系。)
询问我用过或拥有的任何东西,我会告诉你。
答案1
根据您的问题,在我看来,LAN 网段可能会阻止端口 UDP 53,因此您可以轻松检查,只需禁用 IPtables 服务并检查即可。只需确保客户端 DNS 已配置即可。
更好的 DNS 设置选项解决方案如下:
选项1:
您可以在 LAN 中使用公共 DNS,例如。 8.8.8.8 ,那么您的客户端机器就可以访问您的服务器。
注意:-您可能不习惯使用此选项,因为您可能会限制客户端
选项2:
如果您在 LAN 中使用内部/内联网 DNS 服务器
在 DNS 中,存在诸如内部视图和外部视图之类的概念/配置
意味着在您的本地 dns 中,您已配置如下,如果匹配客户端是您的 LAN 网段,则 DNS 服务器将解析内部 IP,然后您的客户端可以通过您的网络服务器的 LAN IP 访问 LAN 中的网页。
如果不匹配,则 DNS 客户端回答公共 IP。
访问此页对于相同的。
要进行故障排除,您可以在 Windows 客户端使用以下命令
nslookup myftp.org
在Linux中
dig myftp.org
或者您也可以指定服务器,如下所示:
dig myftp.org @address_of_your_lan_dns_or_check_using_public
如果 DNS 解析正确,则使用以下命令检查端口 80(http)/21(ftp) 是否打开:
在 Windows/Linux 中 telnet myftp.org 21
或者在Linux下
nc -zvw1 myftp.org 21
答案2
如果您的 LAN 有 NAT。设置 DNAT 将使端口转发适用于外部世界,当来自 LAN(具有 LAN 地址)的计算机尝试通过外部 IP 访问 LAN 中的服务器时,就会出现问题。
这个东西是通过设置修复的假面舞会(SNAT)。 iptables 配置中需要这样的内容:假设您的 LAN 是 192.168.2.0/24,该子网的默认 GW 是 192.168.2.1 (eth1)
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j SNAT --to 192.168.2.1
或者
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE