Локалка 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 и соответственно на всех клиентах он указан шлюзом. На самам маршрутизаторе
Код: Выделить всё
# 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Код: Выделить всё
#
# /usr/local/firewall.sh
#
#!/bin/sh
IPTABLES="/sbin/iptables"
# Задаем переменные
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
Делаю
Код: Выделить всё
tracert -d 192.168.103.2
Трассировка маршрута к 192.168.103.2 с максимальным числом прыжков 30
1 <1 мс <1 мс <1 мс 192.168.100.202
2 * * * Превышен интервал ожидания для запроса.
3 * * * Превышен интервал ожидания для запроса.
4 * * * Превышен интервал ожидания для запроса.Выключаю фаервол
Код: Выделить всё
# 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Тогда все в порядке
Код: Выделить всё
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
Трассировка завершена.