无法从Linux路由器后面ping外部networking

我的系统在Linux防火墙后面,其中eth0连接到互联网,eth1连接到我的LAN。 问题是我无法ping到我的networking之外。 我在这里使用的iptables规则如下。

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p icmp -j SNAT – 源代码$ PUBLICIP

如果我在这里做错了,请纠正我。

数据包转发由内核启用。

包含iptables规则的脚本如下。

IPT=/sbin/iptables echo 0 > /proc/sys/net/ipv4/tcp_ecn echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp echo 1 > /proc/sys/net/ipv4/ip_forward # Removing Ipchains modules and inserting IPT modules /sbin/rmmod ipchains &> /dev/null /sbin/modprobe ip_tables /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_nat_irc # Connection tracking module /sbin/modprobe ip_conntrack &> /dev/null /sbin/modprobe ip_conntrack_ftp &> /dev/null /sbin/modprobe ip_conntrack_irc # Flush Default Rules /sbin/iptables -F /sbin/iptables -t nat -F /sbin/iptables -t mangle -F /sbin/iptables -F INPUT /sbin/iptables -F FORWARD /sbin/iptables -F OUTPUT /sbin/iptables -t nat -F POSTROUTING /sbin/iptables -t nat -F PREROUTING /sbin/iptables -t nat -F OUTPUT /sbin/iptables -t mangle -F PREROUTING /sbin/iptables -t mangle -F OUTPUT # Setting Default policies on rules /sbin/iptables -P INPUT ACCEPT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -t nat -P POSTROUTING ACCEPT /sbin/iptables -t nat -P PREROUTING ACCEPT /sbin/iptables -t nat -P OUTPUT ACCEPT /sbin/iptables -t mangle -P PREROUTING ACCEPT /sbin/iptables -t mangle -P OUTPUT ACCEPT LANIF="lo eth1 ppp0" for x in ${LANIF} do $IPT -A INPUT -i ${x} -j ACCEPT $IPT -A FORWARD -i ${x} -j ACCEPT done #Google DNS /sbin/iptables -t nat -A POSTROUTING -d 8.8.8.8 -o eth0 -j SNAT --to-source $PUBLICIP /sbin/iptables -t nat -A POSTROUTING -d 8.8.4.4 -o eth0 -j SNAT --to-source $PUBLICIP /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.76 -o eth0 -j SNAT --to-source $PUBLICIP /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.3 -o eth0 -j SNAT --to-source $PUBLICIP /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.68 -o eth0 -j SNAT --to-source $PUBLICIP /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED \ -j ACCEPT /sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED \ -j ACCEPT # List The Rules echo "########### FILTER ############################" /sbin/iptables -L -n -v echo "" echo "########### NAT ############################" /sbin/iptables -t nat -L -n -v echo "" echo "########### MANGLE ############################" /sbin/iptables -t mangle -L -n -v echo "" echo "#################################################" 

你有没有启用内核转发数据包?

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

你也可以粘贴你的完整的iptables规则?

好像你忘了NAT FORWARDstream量。 尝试添加以下规则:

 $IPT -t nat -A POSTROUTING -o eth0 -j SNAT -to-source $PUBLICIP 

这将确保所有stream量eth0不会泄漏内部IP地址,并应解决您的问题。

祝你好运,
JoãoMiguel Neves