Ubuntu 盒子静态路由问题

Ubuntu 盒子静态路由问题

我正在尝试将 ubuntu 服务器配置为路由器。这是我的接口配置(eth2 连接到我的 WAN,eth0 连接到我的 LAN):

auto eth2
iface eth2 inet static
    address 192.168.0.249
    netmask 255.255.255.0
    gateway 192.168.0.1
    broadcast 192.168.0.255

auto eth0
iface eth0 inet static
    address 192.168.100.1
    netmask 255.255.255.0

这是路由器信息:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth2

这是 dhcp 配置:

subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.101 192.168.100.254;
    option domain-name-servers 201.70.86.133;
    option routers 192.168.100.1;
    authoritative;
}

然后我通过 eth0 上的电缆连接 mac os x。这是 en0 接口配置:

en0: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
 ether 00:26:bb:5d:82:b0 
 inet6 fe80::226:bbff:fe5d:82b0%en0 prefixlen 64 scopeid 0x4 
 inet 192.168.100.101 netmask 0xffffff00 broadcast 192.168.100.255
 media: autoselect (100baseTX <full-duplex>)
 status: active

这是路由表:

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.100.1      UGSc          139       32     en0
10.37.129/24       link#8             UC              2        0   vnic1
10.37.129.2        0:1c:42:0:0:9      UHLWI           0      839     lo0
10.37.129.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        4   vnic1
10.211.55/24       link#7             UC              2        0   vnic0
10.211.55.2        0:1c:42:0:0:8      UHLWI           0      840     lo0
10.211.55.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        4   vnic0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3   507924     lo0
169.254            link#4             UCS             0        0     en0
172.16.42/24       link#10            UC              2        0  vmnet8
172.16.42.1        0:50:56:c0:0:8     UHLWI           0      839     lo0
172.16.42.255      link#10            UHLWbI          1       24  vmnet8
192.168.100        link#4             UC              2        0     en0
192.168.100.1      0:e0:7c:7e:f:99    UHLWI         139        0     en0    777
192.168.100.101    127.0.0.1          UHS             0        0     lo0
192.168.100.255    ff:ff:ff:ff:ff:ff  UHLWbI          0        4     en0
192.168.116        link#9             UC              2        0  vmnet1
192.168.116.1      0:50:56:c0:0:1     UHLWI           0      839     lo0
192.168.116.255    ff:ff:ff:ff:ff:ff  UHLWbI          0        4  vmnet1

我的 net.ipv4.ip_forward 已设置,但 iptables 没有定义规则。

当我 ping 192.168.100.1 时,它可以工作。当我 ping 192.168.0.249 时,它也可以工作。但是,当我尝试 ping 192.168.0.1 时,它却不行。在最后一种情况下,当我使用 tcpdump 时,我可以在 eth0 中看到 ICMP 活动,但在 eth2 中看不到任何活动。

有人有办法解决这个问题吗? 有办法调试吗?

谢谢,

答案1

查看/etc/sysctl.conf提及的行net.ipv4.ip_forward。如果它仍被注释掉,请取消注释,然后运行sysctl -p以获取数据包转发。这应该允许您从 192.168.100.101 ping 192.168.0.1。

但是,随后您将必须考虑使用 iptables 将来自 192.168.100.0/24 到外部世界的连接进行 NAT。

答案2

您能从您的 Ubuntu 系统 ping 192.168.0.1 吗?

你的 Ubuntu 系统上启用了转发功能吗?如果你想转发数据包,则需要net.ipv4.ip_forward启用它;这通常放在/etc/sysctl.conf

net.ipv4.ip_forward = 1

然后运行sysctl -p

您可以在命令行上进行此项设置(非持久性):

sysctl -w net.ipv4.ip_forward=1

您的本地防火墙是否阻止转发?检查转发的默认策略(或转发链中的任何特定规则)。

答案3

也许你没有跨接口转发数据包?试试

echo 1 > /proc/net/ipv4/ip_forward
echo 1 > /proc/net/ipv6/ip_forward

如果有效,请将其永久设置为sysctl.conf

答案4

找到原因了。

我的 WAN 路由器无法识别 192.168.100.0 网络,因此 icmp 请求到达那里,但无法返回。

更改 WAN 路由器中的路由信息​​可以解决问题。

谢谢!

相关内容