我已经build立了一个本地Linux(14.0.4 Ubuntu)机器作为路由器,可以做到以下几点:
但我不能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
日志文件的相关部分可以在这里find。
那么,你的configuration似乎有点短。 我将附加路由器的configuration作为一个工作示例。
此外,您正在使用“-m状态”来跟踪相关的已build立的连接,而我通常使用“-m conntrack”。
你可以尝试 – logging丢弃的数据包,看看什么和为什么被iptables丢弃。 我在下面写我的configuration(logging,还包括OUTPUT链的默认ACCEPT策略)。 要启用它,将其保存到文件(例如'iptables_test_rules.txt')并使用'iptables-restore iptables_test_rules.txt'来应用它们。 有关规则概述,请参阅“iptables -L -v”,并查看丢弃连接的系统日志(注意:您的系统日志可能会非常快速地增长!
*filter # 1. Logging. # 1.1. logdrop chain -N logdrop -A logdrop -j LOG --log-prefix "dropped: " -A logdrop -j DROP # 2. Set default policies for INPUT, OUTPUT and FORWARD chains -P INPUT DROP -P OUTPUT ACCEPT -P FORWARD DROP # 3. INPUT CHAIN # 3.0. Allow loopback -A INPUT -i lo -j ACCEPT # 3.1. Allow already established connections -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # 3.2. log and drop invalid packets -A INPUT -m conntrack --ctstate INVALID -j logdrop # 3.3. Allow DHCP renew on eth0 -A INPUT -p udp -m udp --dport 68 -i eth0 -j ACCEPT # 3.4. Allow any connections from lan -A INPUT -i eth1 -j ACCEPT # 3.5. Log and drop the rest -A INPUT -j logdrop # 4. Forwarding # 4.0. Allow forwarding from lan to wan -A FORWARD -i eth1 -o eth0 -j ACCEPT # 4.1. Allow forwarding from lan to lan -A FORWARD -i eth1 -o eth1 -j ACCEPT # 4.2. Allow forwarding from wan to lan, but only for already established connections -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT # 4.4. log and drop the rest in FORWARD chain -A FORWARD -j logdrop COMMIT *nat # Set default NAT policies to accept -P PREROUTING ACCEPT -P POSTROUTING ACCEPT -P OUTPUT ACCEPT # 5. NAT # 5.1. Enable NAT -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *raw COMMIT
客户端没有默认路由通过您的路由器框。 尝试
route add -net default gw abcd
在客户端上,其中abcd是防火墙的面向客户端的地址。