我的系统在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