Ubuntu的盒子静态路由问题

我想configuration一个Ubuntu服务器是一个路由器。 这是我的接口configuration(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 

这是DHCPconfiguration:

 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接口configuration:

 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中看不到。

有没有人有办法解决这个问题? 有没有一种方法来debugging它?

谢谢,

/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转换到外部世界。

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

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

 net.ipv4.ip_forward = 1 

然后运行sysctl -p

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

 sysctl -w net.ipv4.ip_forward=1 

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

也许你不通过接口转发数据包? 尝试

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

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

find原因。

我的广域网路由器无法识别192.168.100.0networking,因此icmp请求到达那里,但无法恢复。

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

谢谢!