>откуда проверяете, с сервера или другой машины? ping это icmp протокол, он
>разрешен? тут показаны правила только для входящих пакетов, для исходящих и
>транзитных нет ничего. и не понятно кто есть IP_VPN , а
>кто IP_VPN_route.
>показывайте уж тогда iptables-save с описанием кто есть кто. серые ip лучше
>не прятать что бы не путаться. так же таблица маршрутизации не
>будет лишней, а если проверяете не с сервера , а с
>другой машины то и ее настройки то же показывайте. Понимаю, что запутал. Постораюсь описать все снова и по порядку.
Сервер с iptables имеет 2 сетевые:
подключенная к ДСЛ-модему: eth1 - 192.168.1.2
локальная: eth2 - 192.168.50.77
Он же подключается по впн к серверу и устройство ppp0, создающееся на время подключения получает ip: 192.168.80.40. После чего прописывается маршрут к серверу с БД - 192.168.20.30.
Пингую с сервера.
Если таблицы iptables стереть, то пингуется все нормально. При заполненных таблицах, эти 2 ip (192.168.80.40 и 192.168.20.30) не пингуются, выдается ошибка ping: sendmsg: Операция не позволяется. Но сайты, локальная сеть и т.д. пингуются.
Теперь привожу скрипт, который заполняет таблицы (лог-куски отброшу чтобы не сорить):
=====================
#!/bin/sh
#Карта смотрящая в инет через ДСЛ модем)
INET_IP="192.168.1.2"
INET_IFACE="eth1"
INET_BROADCAST="192.168.1.255"
#Карта смотрящая в локальную сеть
LAN_IP="192.168.50.77"
LAN_IP_RANGE="192.168.50.0/24"
LAN_IFACE="eth2"
LO_IFACE="lo"
LO_IP="127.0.0.1"
IPTABLES="/sbin/iptables"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe nf_conntrack_ipv4
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
# TCP rules
#SSH
$IPTABLES -A tcp_packets -p TCP -s 192.168.50.0/24 --dport 22 -j allowed
#IDENTD
$IPTABLES -A tcp_packets -p TCP -s 192.168.50.0/24 --dport 113 -j allowed
#Squid
$IPTABLES -A tcp_packets -p TCP -s 192.168.50.0/24 --dport 3128 -j allowed
# UDP ports
$IPTABLES -A udp_packets -p UDP -s 192.168.50.0/24 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 192.168.50.0/24 --destination-port 4000 -j ACCEPT
# ICMP rules
$IPTABLES -A icmp_packets -p ICMP -s 192.168.50.0/24 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 192.168.50.0/24 --icmp-type 11 -j ACCEPT
# INPUT chain
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
# Rules for special networks not part of the Internet
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
# Rules for incoming packets from the internet.
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
# FORWARD chain
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
# Accept the packets we actually want to forward
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# OUTPUT chain
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
# Special OUTPUT rules to decide which IP's to allow.
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
# POSTROUTING chain
#Ходить через NAT на почту
$IPTABLES -t nat -A POSTROUTING -p TCP -s 192.168.50.0/24 --dport 25 -o $INET_IFACE -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -p TCP -s 192.168.50.0/24 --dport 110 -o $INET_IFACE -j SNAT --to-source $INET_IP
#Через на на 1753 порт для VPN
$IPTABLES -t nat -A POSTROUTING -p TCP -s 192.168.50.0/24 --dport 1753 -o $INET_IFACE -j SNAT --to-source $INET_IP
=====================
Для VPN добавлял, изменял огромное кол-во вариантов цепочек, все и не упомню. Но доходит до полного абсурда и логично, что не работает :(((
Цепочки примерно такие:
$IPTABLES -A INPUT -p 47 -i eth1 -s 192.168.50.0/24 -j ACCEPT
$IPTABLES -A FORWARD -p TCP -s 192.168.50.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -p 47 -o eth2 -s 192.168.50.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP -s 192.168.50.0/24 --sport 1753 -j ACCEPT
Как видите до пингования из локальной сети дело еще не дошло :(
Да, роутинг следующий:
route add -host 192.168.20.30 netmask 0.0.0.0 gw 192.168.80.40 dev ppp0