Você ativou o encaminhamento de pacotes pelo kernel?
echo 1 > /proc/sys/net/ipv4/ip_forward
Você também pode colar suas regras completas de iptables?
Meu sistema está atrás de um firewall Linux, onde eth0 está conectado à internet e eth1 está conectado à minha LAN. O problema é que não consigo fazer ping para fora da minha rede. A regra do iptables que usei aqui como abaixo.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p icmp -j SNAT - para fonte $ PUBLICIP
Por favor, corrija-me se estou fazendo algo errado aqui.
O encaminhamento de pacotes é ativado pelo kernel.
O script que contém as regras do iptables é o seguinte.
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 "#################################################"
Você ativou o encaminhamento de pacotes pelo kernel?
echo 1 > /proc/sys/net/ipv4/ip_forward
Você também pode colar suas regras completas de iptables?
Parece que você está se esquecendo do tráfego NAT FORWARD. Tente adicionar a seguinte regra:
$IPT -t nat -A POSTROUTING -o eth0 -j SNAT -to-source $PUBLICIP
Isso garante que todo o tráfego que sai do eth0
não vaze endereços IP internos e resolva seu problema.
Boa sorte,
João Miguel Neves
Tags iptables