我正在尝试在装有 Ubuntu Server 18.04 的机器上设置路由器。该服务器主板上有一块网卡,还有两块 PCI 网卡,每块网卡有 4 个接口。我在同一台机器上设置了 DHCP 服务器和 DNS 服务器。我使用了这教程。我的网络设置如下:
当我ping 192.168.1.1
从 192.168.1.2 执行时,一切正常,但是当我尝试使用 ping google 的 ip 时,ping 172.217.17.36
我没有收到任何回复。nslookup google.com 192.168.1.1
也超时了。但是当我nslookup google.com 192.168.0.113
从笔记本电脑执行时,我确实得到了预期的回复。在 ubuntu 路由器上执行ping google.com
也很好。
我的 netplan 设置如下:
network:
ethernets:
eno1:
dhcp4: true
enp9s0:
addresses:
- 192.168.1.1/24
dhcp4: false
nameservers:
addresses:
- 127.0.0.1
search: []
enp10s0:
addresses:
- 192.168.1.1/24
dhcp4: false
nameservers:
addresses:
- 127.0.0.1
search: []
enp11s0:
addresses:
- 192.168.1.1/24
dhcp4: false
nameservers:
addresses:
- 127.0.0.1
search: []
...same for other interfaces...
version: 2
我的 ip 表设置如下:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
我的dhcp.conf如下:
option domain-name "example.com";
option domain-name-servers 127.0.0.1;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.254;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
}
我正在使用 pi-hole 作为我的 DNS 服务器。
ifconfig
在 ubuntu 路由器上结果是:
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.113 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::12c3:7bff:fe6c:c81b prefixlen 64 scopeid 0x20<link>
inet6 2a02:1812:d38:c300:274d:5b5:ce56:bdf6 prefixlen 64 scopeid 0x0<global>
inet6 2a02:1812:d38:c300:12c3:7bff:fe6c:c81b prefixlen 64 scopeid 0x0<global>
ether 10:c3:7b:6c:c8:1b txqueuelen 1000 (Ethernet)
RX packets 13961 bytes 1287100 (1.2 MB)
RX errors 0 dropped 9010 overruns 0 frame 0
TX packets 2150 bytes 372856 (372.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20 memory 0xdfd00000-dfd20000
enp10s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::2e0:4cff:fe68:873e prefixlen 64 scopeid 0x20<link>
ether 00:e0:4c:68:87:3e txqueuelen 1000 (Ethernet)
RX packets 1041 bytes 233462 (233.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1427 bytes 460072 (460.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp11s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:e0:4c:68:87:3f txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
enp9s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:e0:4c:68:87:3d txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 8029 bytes 524899 (524.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8029 bytes 524899 (524.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
当外部 IP 地址来自 192.168.1.2 时,如何弄清楚为什么我的路由器没有响应 ping 和 dns 请求?
如果您希望我发布更多信息,请告诉我。
答案1
我发现此设置中存在多个不相关的问题:
无法从 ping 外部 IP
192.168.1.2
。您应该检查以下事项:- 是否
192.168.1.2
已配置适当的路由?检查 的输出ip route
是否包含带有网关的默认路由192.168.1.1
(如 中配置的dhcp.conf
) - 是否
192.168.1.1
配置了适当的路由?同样,请检查ip route
此处。但由于您可以google.com
从那里 ping 通,因此情况应该如此。 - 是
ip_forward
路由器上是否启用了此功能?这是我的猜测。- 检查输出
cat /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
启用
- 检查输出
- 是否
无法解析 DNS 请求:
在你的dhcp.conf
你有
option domain-name-servers 127.0.0.1;
但这应该是
option domain-name-servers 192.168.1.1;
否则,桌面将尝试使用127.0.0.1
其本身作为 DNS 服务器。
这很可能是这里的问题。此外,您可以测试以解析明确指定 DNS 服务器的 DNS 请求,执行
host example.org 192.168.1.1
在台式机和路由器上。还要检查两个主机上哪个 DNS 服务器通过 DHCP 有效配置: * 在台式机上,现在可能是127.0.0.1
,见上文,但应该是192.168.1.1
* 在路由器上,这可能是192.168.0.1
上游路由器,通过 DHCP 配置。因此:即使您可以在路由器上成功解析 DNS 请求 - 作为客户- 这并不意味着 DNS 守护进程 - 作为服务器- 已配置并正常工作。
- 所有接口上都有相同的子网:这个问题不会困扰你然而但当您将多根电缆连接到路由器时,很可能会出现问题。
目前,您已192.168.1.1/24
在所有配置为第 3 层接口的下游接口上进行了配置。如果其中多个接口处于活动状态,则操作系统将难以决定将数据包路由到哪个接口192.168.1.0/24
。
相反,您应该将所有物理接口连接到虚拟桥接设备,并为该桥接设备分配 IP 地址。这是物理接口作为相互连接的 2 层交换机接口。