LinuxForum.Fans
Тема

Iptables и VPN, Не ходят пинги по ВПН при включенном фаерволе

Автор: Ale__R 7 сообщений 2891 просмотров
#129946

Собственно имеем
Локалка 192.168.100.0/24
Удаленка 192.168.103.0/24
VPN между этими сетями от провайдера.
Структура примерно такая
(LocaNet-192.168.100.0/24) <=> (LAN-192.168.100.2(Zyxel1)WAN-Bridge) <=> (WAN-Bridge(Zyxel2)LAN-192.168.100.3) <=> (192.168.100.4(CiscoVLANПровайдера)192.168.103.4) <=> (LAN-192.168.103.3(Zyxel3)WAN-Bridge) <=> (WAN-Bridge(Zyxel4)LAN-192.168.103.2) <=> (RemoteNet-192.168.103.0/24)
В LocaNet-192.168.100.0/24 есть маршрутизатор под CentOS и соответственно на всех клиентах он указан шлюзом. На самам маршрутизаторе

text
# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1
[b]192.168.103.0   192.168.100.4   255.255.255.0   UG        0 0          0 eth1[/b]
192.168.0.0     192.168.100.252 255.255.255.0   UG        0 0          0 eth1
192.168.110.0   192.168.100.252 255.255.255.0   UG        0 0          0 eth1
192.168.120.0   192.168.100.252 255.255.255.0   UG        0 0          0 eth1
192.168.105.0   192.168.100.252 255.255.255.0   UG        0 0          0 eth1
192.168.10.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.10.4    0.0.0.0         UG        0 0          0 eth0
text
# Задаем переменные
EXTIP=192.168.10.202
INTIP=192.168.100.202

# Отчищаем все правила в таблицах filter, nat и mangle

$IPTABLES -t filter -F $IPTABLES -t nat -F $IPTABLES -t mangle -F

# Удаляем все пользовательские цепочки в таблицах filter, nat и mangle

$IPTABLES -t filter -X $IPTABLES -t nat -X $IPTABLES -t mangle -X

# Задаем политики по умолчанию

$IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P FORWARD DROP $IPTABLES -t filter -P OUTPUT DROP

# Создаем пользовательские цепочки. Как строить firewall каждый решает сам. # Но лично мне удобно настраивать фаервол, когда все разбито по цепочкам # и как бы разложено по своим полочкам. Тогда я точно знаю, что и где надо # искать или исправлять. Думаю, названия цепочек говорят сами за себя.

$IPTABLES -N eth1-eth0 # С локалки на внешку $IPTABLES -N eth0-eth1 # С внешки на локалку $IPTABLES -N eth0-out # Исходящие с внешки $IPTABLES -N eth1-out # Исходящие с локального интерфейса $IPTABLES -N eth0-in # Входящие на внешний интерфейс $IPTABLES -N eth1-in # Входящие на внутренний интерфейс $IPTABLES -N icmp_packets # Пакеты ICMP

# Направляем все входящие пакеты в соответствующие цепочки.

$IPTABLES -A INPUT -d $INTIP -j eth1-in $IPTABLES -A INPUT -d $EXTIP -j eth0-in

# Направляем все исходящие пакеты в соответствующие цепочки.

$IPTABLES -A OUTPUT -s $INTIP -j eth1-out $IPTABLES -A OUTPUT -s $EXTIP -j eth0-out

# Разрешаем весь трафик с петлевого интерфейса.

$IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT

# Разрешаем следующие типы icmp пакетов.

$IPTABLES -A icmp_packets -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 3 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 11 -j ACCEPT

# Для удобства фильтрации, направляем все транзитные пакеты, # в соответствующие цепочки. # eth1-eth0 локальная сеть -> мир # eth0-eth1 мир -> локальная сеть

$IPTABLES -A FORWARD -i eth1 -o eth0 -j eth1-eth0 $IPTABLES -A FORWARD -i eth0 -o eth1 -j eth0-eth1

# eth1-eth0. В данную цепочку попадают все транзитные пакеты, # направленные из локальной сети в мир.

$IPTABLES -A eth1-eth0 -p icmp -j icmp_packets $IPTABLES -A eth1-eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-eth0 -p tcp --dport 110 -j ACCEPT $IPTABLES -A eth1-eth0 -p tcp --dport 25 -j ACCEPT $IPTABLES -A eth1-eth0 -p tcp --dport 23 -j ACCEPT $IPTABLES -A eth1-eth0 -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-eth0 -p tcp --dport 5190 -j ACCEPT #Для банка VPN $IPTABLES -A eth1-eth0 -p udp --dport 87 -j ACCEPT $IPTABLES -A eth1-eth0 -p udp --dport 99 -j ACCEPT #/#Для банка VPN $IPTABLES -A eth1-eth0 -j LOG --log-prefix "fp=eth1-eth0:99 a=DROP " $IPTABLES -A eth1-eth0 -j DROP

# eth0-eth1. В данную цепочку попадают все транзитные пакеты, # направленные из мира в локальную сеть.

$IPTABLES -A eth0-eth1 -j ACCEPT $IPTABLES -A eth0-eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-eth1 -j LOG --log-prefix "fp=eth0-eth1:99 a=DROP " $IPTABLES -A eth0-eth1 -j DROP

# eth1-in. В данной цепочке открываем порты тех служб, которые # должны быть доступны на сервере из локальной сети.

$IPTABLES -A eth1-in -j ACCEPT $IPTABLES -A eth1-in -p icmp -j icmp_packets $IPTABLES -A eth1-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 53 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 3128 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 6666 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 6667 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 5190 -j ACCEPT #$IPTABLES -A eth1-in -p tcp --dport 110 -j ACCEPT #$IPTABLES -A eth1-in -p tcp --dport 25 -j ACCEPT #$IPTABLES -A eth1-in -p tcp --dport 87 -j ACCEPT $IPTABLES -A eth1-in -j LOG --log-prefix "fp=eth1-in:99 a=DROP " $IPTABLES -A eth1-in -j DROP

# eth0-in. В данной цепочке открываем порты тех служб, которые # должны быть доступны на сервере из мира. Например www, smtp, ftp

$IPTABLES -A eth0-in -p icmp -j icmp_packets $IPTABLES -A eth0-in -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-in -j LOG --log-prefix "fp=eth0-in:99 a=DROP " $IPTABLES -A eth0-in -j DROP

# eth1-out.

$IPTABLES -A eth1-out -j ACCEPT $IPTABLES -A eth1-out -p icmp -j icmp_packets $IPTABLES -A eth1-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-out -j LOG --log-prefix "fp=eth1-out:99 a=DROP " $IPTABLES -A eth1-out -j DROP

# eth0-out.

$IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -p udp --dport 53 -j ACCEPT $IPTABLES -A eth0-out -p tcp -m multiport --dport 80,443,8443,8080 -j ACCEPT $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j LOG --log-prefix "fp=eth0-out:99 a=DROP " $IPTABLES -A eth0-out -j DROP

# Производим сетевую трансляцию адресов (NAT)

#$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 \ #-o eth0 -j SNAT --to-source 212.42.65.50 $IPTABLES -t nat -A POSTROUTING -s 192.168.100.0/24 \ -o eth0 -j SNAT --to-source $EXTIP

# "Заварачиваем" весь http трафик на squid.

$IPTABLES -t nat -A PREROUTING -s 192.168.100.0/24 \ -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

на маршрутизаторе
eth1 - локалка (192.168.100.202/24)
Т.е. на клиенте
IPv4-адрес. . . . . . . . . . . . : 192.168.100.90
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз. . . . . . . . . : 192.168.100.202
Делаю

text
tracert -d 192.168.103.2
Трассировка маршрута к 192.168.103.2 с максимальным числом прыжков 30
  1    <1 мс    <1 мс    <1 мс  192.168.100.202
  2     *        *        *     Превышен интервал ожидания для запроса.
  3     *        *        *     Превышен интервал ожидания для запроса.
  4     *        *        *     Превышен интервал ожидания для запроса.

Выключаю фаервол

text
# iptables -L -v
Chain INPUT (policy ACCEPT 392 packets, 210K bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 DROP       icmp --  any    any     anywhere             anywhere            icmp timestamp-request

Chain FORWARD (policy ACCEPT 27 packets, 4205 bytes) pkts bytes target prot opt in out source destination 338 78053 ACCEPT all -- eth0 eth1 anywhere anywhere state RELATED,ESTABLISHED 374 32000 ACCEPT all -- eth1 eth0 anywhere anywhere

Chain OUTPUT (policy ACCEPT 397 packets, 209K bytes) pkts bytes target prot opt in out source destination

Тогда все в порядке

text
tracert -d 192.168.103.2
Трассировка маршрута к 192.168.103.2 с максимальным числом прыжков 30
  1    19 ms    <1 мс    <1 мс  192.168.100.202
  2     2 ms     6 ms     2 ms  192.168.100.4
  3     3 ms     6 ms     6 ms  192.168.103.2
Трассировка завершена.
#129988

После выполнения скрипта в консоли
iptables -I eth0-out 1 -j ACCEPT
попробуй снова пингануть

#129991

Сделал
sh iptables.sh
потом
iptables -I eth0-out 1 -j ACCEPT
не пингует

text
tracert -d 192.168.103.251
Трассировка маршрута к 192.168.103.251 с максимальным числом прыжков 30
  1    <1 мс    <1 мс    <1 мс  192.168.100.202
  2     *        *        *     Превышен интервал ожидания для запроса.

И потом цепочка eth0-out - это у меня исходящие с внешнего интерфеса, который смотрит на другого провайдера.
По идее что то не так с цепочкой eth1-out

#130074

Ну пробни в данной цепочки
iptables -I eth1-out 1 -j ACCEPT

#130358

Все равно не помогло
Не идет пинги и соответственно ничего не идет ....

#131874

Дописал
$IPTABLES -A FORWARD -i eth1 -o eth1 -s 192.168.100.0/24 -d 192.168.103.0/24 -j ACCEPT
Все заработало....

#131877
'Ale написал:
[R']Дописал
$IPTABLES -A FORWARD -i eth1 -o eth1 -s 192.168.100.0/24 -d 192.168.103.0/24 -j ACCEPT
Все заработало....

Ну это в общие правила а в не свои цепочки
Теперь ток проверьте чтоб попадали под ваши правила

Войдите или зарегистрируйтесь, чтобы ответить.