Невозможно пропинговать внешнюю сеть из-за маршрутизатора Linux

Моя система находится за брандмауэром Linux, где eth0 подключен к Интернету, а eth1 подключен к моей локальной сети. Проблема в том, что я не могу пропинговать вне моей сети. Правило 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 "#################################################"

2 ответа

Вы включили пересылку пакетов ядром?

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

Можете ли вы также вставить свои полные правила iptables?

Похоже, вы забываете NAT FORWARD трафик. Попробуйте добавить следующее правило:

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

Это обеспечит выход всего трафика eth0 не будет пропускать внутренние IP-адреса и должен решить вашу проблему.

Удачи,
Жоао Мигель Невес

Другие вопросы по тегам