我已经将本地 linux (14.0.4 Ubuntu) 机器设置为路由器,可以执行以下操作:
- 从客户端 ping 服务器/路由器
- 从服务器/路由器 ping 客户端
- 从另一个客户端 ping 一个客户端
ping 服务器/路由器后面的调制解调器/路由器
但我无法 ping 谷歌或 8.8.8.8。我收到以下错误:
ping: unknown host www.google.com
connect: network is unreachable
但是我可以在服务器/路由器上发出这两个命令,没有问题,这让我相信这是一个iptables
相关的问题。有人可以看看下面的代码,我用它来初始化 iptables,并告诉我是否有任何明显的错误。
#!/bin/bash
ethInternal=eth1
ethExternal=eth0
sudo iptables --flush
sudo iptables --table nat --flush
sudo iptables --delete-chain
sudo iptables --table nat --delete-chain
sudo iptables -t nat -A POSTROUTING -o $ethExternal -j MASQUERADE
sudo iptables -A FORWARD -i $ethExternal -o $ethInternal -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ethInternal -o $ethExternal -j ACCEPT
编辑 1
client: netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.66.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
编辑 2
client: route add -net default gw 192.168.66.254
client: netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.66.254 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.66.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
编辑 3
SV-01: vi /var/log/kern.log
可以在此处找到日志文件的相关部分。
客户端没有通过您的路由器框的默认路由。尝试
在客户端上,
a.b.c.d
防火墙的面向客户端的地址在哪里。好吧,你的配置似乎有点短。我附上我的路由器的配置作为一个工作示例。
此外,您使用“-m state”来跟踪相关和已建立的连接,而我通常使用“-m conntrack”。
您可以尝试什么 - 记录丢弃的数据包并查看 iptables 丢弃的内容和原因。我正在下面编写我的配置(带有日志记录,还包括 OUTPUT 链的默认 ACCEPT 策略)。要启用它,请将其保存到文件(例如,“iptables_test_rules.txt”)并使用“iptables-restore iptables_test_rules.txt”应用它们。请参阅“iptables -L -v”以了解规则概述和您的 syslog 以了解断开的连接(注意:您的 syslog 可能会增长得非常快!)。