我遇到了一个奇怪的问题,我的网络服务器从网络上的本地机器抛出了上述错误。如果我通过其 IP 地址访问远程服务器,192.168.0.2
我会得到默认的index.html
apache2 页面。如果我通过服务器名称访问它,server-01.jjnetwork
我会得到错误。我没有收到任何错误记录,也没有收到任何尝试服务器名称的访问记录。我不确定如何找出问题所在。我正在运行 Ubuntu 14.04 Server、apache2 并使用 dnsmasq 进行 dhcp 和 dns。所有这些都是来自 ubuntu 存储库的最新版本。
以下是我诊断问题所采取的一些步骤。如果代码太多,请原谅,因为我不知道问题出在哪里;
请求的标题是;
Request URL:http://server-01.jjnetwork/
Request Method:GET
Status Code:403 Forbidden
Remote Address:127.0.0.1:80
这看起来很奇怪,我不确定为什么它会获取远程地址,因为127.0.1.1
这让我认为这可能是一个dns
问题。
但是,从我的本地终端,我可以ping
这样访问服务器;
joemiller@joemiller:/ > ping server-01.jjnetwork
PING server-01.jjnetwork (192.168.0.2) 56(84) bytes of data.
64 bytes from server-01.jjnetwork (192.168.0.2): icmp_seq=1 ttl=64 time=1.53 ms
64 bytes from server-01.jjnetwork (192.168.0.2): icmp_seq=2 ttl=64 time=2.02 ms
64 bytes from server-01.jjnetwork (192.168.0.2): icmp_seq=3 ttl=64 time=1.49 ms
64 bytes from server-01.jjnetwork (192.168.0.2): icmp_seq=4 ttl=64 time=2.02 ms
^C
--- server-01.jjnetwork ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.496/1.767/2.020/0.254 ms
因此我认为域名解析正确。我已通过dig
针对服务器的查询检查了这一点;
joemiller@joemiller:/ > nslookup server-01.jjnetwork 192.168.0.2
Server: 192.168.0.2
Address: 192.168.0.2#53
Name: server-01.jjnetwork
Address: 192.168.0.2
Name: server-01.jjnetwork
Address: 127.0.1.1
Name: server-01.jjnetwork
Address: 127.0.0.1
我的主机文件包含这个;
root@server-01:/home/joemiller# grep -o '^[^#]*' /etc/hosts
127.0.0.1 localhost server-01
127.0.1.1 server-01
192.168.0.2 server-01
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
这是我的 dnsmasq 配置;
root@server-01:/home/joemiller# grep -o '^[^#]*' /etc/dnsmasq.conf
domain-needed
bogus-priv
resolv-file=/etc/resolv.dnsmasq.conf
local=/jjnetwork/
interface=eth0
listen-address=127.0.0.1
listen-address=192.168.0.2
bind-interfaces
expand-hosts
domain=jjnetwork
dhcp-range=192.168.0.10,192.168.0.150,120h
dhcp-authoritative
log-dhcp
服务器 192.168.0.2 静态获取其 IP 地址,我认为这可能是问题的一部分。我的接口文件如下所示;
root@server-01:/home/joemiller# grep -o '^[^#]*' /etc/network/interfaces
auto lo
iface lo inet loopback
auto ppp0
iface ppp0 inet wvdial
provider Defaults
auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
有人能解释一下问题可能是什么吗,以及我该如何解决它?
答案1
我找到了解决方案。问题出在我/etc/hosts
服务器上的文件上。我已将其更改为此,现在一切正常。
127.0.0.1 localhost
127.0.1.1 localhost
192.168.0.2 server-01.jjnetwork server-01
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
dnsmasq
似乎返回了它找到的第一个记录作为 DNS 查询的结果。在我的例子中,127.0.1.1
本地框似乎已重新路由到该记录127.0.0.1
,因此出现错误。