Ubuntu 14.04 服务器无法路由

Ubuntu 14.04 服务器无法路由

因此,我正在尝试设置一个双宿主 BRO IDS 盒,作为我的家庭网络和宽带附带的现有 el cheapo 路由器之间的网关(?) 服务器。我有的是这个......(管道代表电线,抱歉格式不佳)

Internet  
   |  
ADSL Router running DHCP  (gateway is 192.168.1.254)  
   |  
eth0 (192.168.1.1)  
ubuntu 1404 server running bro IDS, running bind9,   
it serves DHCP on 192.168.2.0 network only on eth1  
eth1 (192.168.2.1)  
   |  
Internal LAN running two Apple Airports in bridge mode  

我觉得我已经正确设置了,但 Ubuntu Server 无法路由。我可以通过 SSH 连接它,并从它 ping 两个接口,还可以 ping 互联网。但是,任一 LAN 上的主机都无法路由到 Ubuntu 服务器的另一端。

以下是 routes -n 的输出

Kernel IP routing tableico /etc/network/interfaces
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         
192.168.1.254   0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

以下是/etc/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.1.1
  netmask 255.255.255.0
  gateway 192.168.1.254
  broadcast 192.168.1.255
 auto eth1   
 iface eth1 inet static  
  address 192.168.2.1  
  network 192.168.2.0  
  netmask 255.255.255.0  
  broadcast 192.168.2.255  
  gateway 192.168.1.254

我使用 sysctl 启用了 ipv4 ipforwarding。Ubuntu DHCP 服务器配置为仅提供 192.168.2.0 IP 地址,并且运行良好。还有另一个 DHCP 路由器为 eth0(192.168.1.0)提供服务,我一直保持其处于活动状态,以便在解决问题的同时使用宽带路由器上的 wifi 浏览网页。

但无论如何,在使用静态和动态分配的 IP 登录到两侧后,我仍然无法 ping 通 Ubuntu 框的另一端。可以发布 dhcpd.conf 的内容吗……?

我是不是遗漏了一些简单的东西?我可以在 Ubuntu 机器上采取任何故障排除步骤来验证问题是否缩小。目前我只收到“未找到/不存在路由”消息……这里还有 /etc/dhcpd.conf 的详细信息……

ddns-update-style none;  
default-lease-time 600;  
max-lease-time 7200;  
authoritative;  
subnet 192.168.2.0 netmask 255.255.255.0 {  
range 192.168.2.2 192.168.2.240;  
option routers 192.168.1.254;  
option broadcast-address 192.168.2.255;  
option domain-name-servers 192.168.2.1, 8.8.8.8;  
}  

这是通过路由器 ping 的输出

Request timeout for icmp_seq 0  
Request timeout for icmp_seq 1  
Request timeout for icmp_seq 2  

另外,在配置它时,我最初将它设置为桥梁,但是该配置很久以前就从接口中删除了(它根本不起作用)

根据要求,以下是 iptables -L 的输出

链输入(策略接受)
目标保护选择源目标

链转发(策略接受)
目标保护选择源目标

链输出(策略接受)
目标保护选择源目标

答案1

有些事情至少对我来说乍一看并不清楚。

  1. /etc/dhcpd.conf 中的以下行是一定错误的:

    选项路由器 192.168.1.254;

它应该是

  option routers 192.168.2.1

目前,您基本上是在告诉您的 DHCP 客户端,它们的默认网关与它们位于不同的子网:您希望它们如何能够到达所述网关?您传递给客户端的网关的正确地址是路由器的 LAN 接口。

  1. 当您说无法从 DHCP 客户端 ping 通时,您是否尝试使用名称(例如www.google.com) 或 IP 地址 (例如8.8.8.8)?这有区别,因为你没有提到 DNS 解析,所以可能发生那件事

    ping -c1 8.8.8.8

得到回复,同时

   ping -c1 www.google.com

才不是。如果是这样的,你是仅有的缺少以下两行/etc/resolv.conf

  nameserver 8.8.8.8
  nameserver 8.8.4.4

如果这是不是案例,请继续阅读。

  1. 你说的iptables不完全一致,因为你声称已经在 iptables 中添加了 NAT 规则,但随后你显示了现有的筛选表,而不是纳特表。因此,请发出以下命令

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

进而,没有重新启动后,尝试发出与上述相同的 ping 命令。

如果所有这些都失败了,那么请在 Ubuntu 机器上打开两个终端,并发出以下两个命令:在终端 1 中,

  tcpdump -i eth0 -n icmp

2 号航站楼

  tcpdump -i eth1 -n icmp

然后转到其中一个 DHCP 客户端,并尝试以下任一操作命令。如果一切正常,你应该看到 ping 和它的回复都通过两个都终端。如果没有,请粘贴输出以获得另一轮帮助。

答案2

您的 Ubuntu 路由器路由正常。这不是问题所在。问题在于您的配置无法工作,因为 ADSL 路由器不知道如何访问 192.168.2.x 网络上的机器。此外,没有设备配置为对 192.168.2.x 网络进行 NAT。所以您的配置毫无意义。

举个例子,192.168.2.9ping 8.8.8.8。Ubuntu 服务器会按照默认路由顺利地路由它。但是 ADSL 路由器在其 LAN 接口上收到一个来自 的数据包192.168.2.98.8.8.8却不知道如何处理它。

更新:要查看一个问题,请考虑 ADSL 路由器上的路由表。它唯一的本地路由是 192.168.1.0/24 到 LAN。其他所有路由都指向您的 ISP 的链接。因此,当它处理发往 192.168.2.1 的数据包时,其路由表会指示将该数据包发送到 Internet。这显然行不通。

相关内容