LINUX.ORG.RU
ФорумAdmin

Конфликт сетей в iptables

 , ,


0

2

Есть интернет-шлюз с debian 8.3, у него 3 сетевые карты + openvpn туннель, итого eth0 - основная локалка, маска 11.0.0.0/24, dhcp (да, такая сеть, спецом думал, что не с кем не пересекусь, НО...) eth1 - wan, статика eth2 - резерв (планировался под резервный wan) tun0 - туннель до одного сервиса института так же стоит squid

Все настроено и в целом работает как задумано. Но потребовалось создать еще одну сеть, в конкретном частном случае одному компьютеру нужен сетевой адрес, отличный от 11.0.0.* (маски совпали с одним сервисом, ять! раз в год и палка стреляет...)

Решил задействовать eth2, и задал маску 172.20.77.0/24 Добавил в iptables... Проблема:

У всех клиентов 11.0.0.* есть пинг до внешнего ресурса по ip или имени хоста, открываются сайты через браузер (80/443, работают через прокси)

Завожу одного клиента с ip 172.20.77.2, у него есть пинг, у него открываются сайты (мимо прокси). В это время отваливается доступ к сайтам у 11.0.0.*, причем пинг по ip и имени сайта есть. Понимаю, что отваливается 80/443 порт, но сквид не падает, в логах не заметил ничего (бегло смотрел).

Проблема воспроизводится, т.е. пока нет клиента в сети 172.20.77.0/24, все работает

Привожу настройки

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# WAN1
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 188.111.111.111
netmask 255.255.255.0
gateway 188.111.111.254

# LAN
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 11.0.0.1
netmask 255.255.255.0

# LAN2
auto eth2
allow-hotplug eth2
iface eth2 inet static
address 172.20.77.1
netmask 255.255.255.0

# iptables restore
post-up iptables-restore < /etc/iptables.rules

Генерируем iptables

#!/bin/bash

# LAN interface
IF0="eth0"

# WAN interface 1
IF1="eth1"

# WAN interface 2
IF2="tun0"

# LAN2 int
#IF3="eth2"

# IP WAN interface 1
IP1="188.111.111.111"

# IP WAN interface 2
IP2="212.193.47.67"

# gateway 1
P1="188.111.111.254"

# gateway 2
P2="212.193.47.65"

# LAN netmask
P0_NET="11.0.0.0/24"

# LAN VIPnet netmask
P3_NET="172.20.77.0/24"

# WAN1 netmask
P1_NET="188.111.111.0/24"

# WAN2 netmask
P2_NET="212.193.47.0/24"

####################

# Очищаем правила
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Запрещаем все, что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Разрешаем localhost и локалку
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $IF0 -j ACCEPT
iptables -A INPUT -i $IF3 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o $IF0 -j ACCEPT
iptables -A OUTPUT -o $IF3 -j ACCEPT

# Рзрешаем пинги
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Разрешаем все исходящие подключения сервера
iptables -A OUTPUT -o $IF1 -j ACCEPT

# Разрешаем все входящие подключения сервера
#iptables -A INPUT -i $IF1 -j ACCEPT

# Разрешаем установленные подключения
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Отбрасываем неопознанные пакеты
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Отбрасываем нулевые пакеты
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# Закрываемся от syn-flood атак
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Разрешаем доступ из локалки наружу
iptables -A FORWARD -i $IF0 -o $IF1 -j ACCEPT
iptables -A FORWARD -i $IF3 -o $IF1 -j ACCEPT

# Закрываем доступ снаружи в локалку
iptables -A FORWARD -i $IF1 -o $IF0 -j REJECT
iptables -A FORWARD -i $IF1 -o $IF3 -j REJECT

# Перенаправляем трафик LAN/TUN0
iptables -A FORWARD -p all -i $IF0 -o $IF2 -j ACCEPT
iptables -A FORWARD -p all -o $IF0 -i $IF2 -j ACCEPT

# Резрешим доступ в TUN0
iptables -A OUTPUT -p all -o $IF2 -j ACCEPT

# Переадресация 80 и 443 портов на прозрачный сквид
iptables -t nat -A PREROUTING -p tcp -m tcp -s 11.0.0.0/24 --dport 443 -j REDIRECT --to-ports 3443
iptables -t nat -A PREROUTING -p tcp -m tcp -s 11.0.0.0/24 --dport 80 -j REDIRECT --to-ports 3080

# Включаем NAT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $P3_NET -o $IF1 -j MASQUERADE

# Открываем доступ к SSH (порт 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Сохраняем правила
/sbin/iptables-save  > /etc/iptables.rules


Ответ на: комментарий от Radjah

удваиваю этого оратора. Ну нафига 11/8 если и так есть 10/8? Неужели там мало подсетей настругать можно? Не, ну если ты не цод на пару млн машин, но я сомневаюсь.

По теме - нарисуй на бумаге карту сети, нарисуй адресное пространство, по 2-3 хоста в каждой подсети и еще пару снаружи, и потом подпиши для них где какой адрес преобразуется (NAT), блокируется или еще чего с ним происходит. Станет легче.

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)

Просмотрел бегло, но сдается мне батенька вы гдето звиздите. Как минимум вот здесь «Генерируем iptables» (далее простыня) вас должны обматерить при запуске этой простыни.
А вот это пункт ваще не понятен «tun0 - туннель до одного сервиса института так же стоит squid» Ну стоит, а нам-то с него что?
Вобщем что-то не договариваете.
ЗЫ И да, присоединяюсь «Шарик, ты балбес» или из другого «Ты, дебил? Нет не так. Ты дебил! Только проблема в том, что я об этом знаю а поциенты нет».

anc ★★★★★ ()

А по делу. Вы не правильно готовите. Вот смотрите, на одном роутере у вас заведена сеть 11.0.0.0/24 (кстати откуда вы взяли такое «*ское» слово маска? Специально что ли учили где-то?) и сеть 172.20.77.0/24 а также есть дэфроут. Давайте попытаемся с «трех раз» догадаться при обращении из сети 172.20.77.0/24 к 11.0.0.0/24 куда полетят пакеты если не было доп правил в iproute2?

anc ★★★★★ ()
Ответ на: комментарий от anc

Ну вот чего ты так сразу? Человек бы нарисовал карту сети, разобрался бы в маршрутизации и адресном пространстве, до всего бы сам дошел. А так...

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

Виноват. Постараюсь больше так не делать.

anc ★★★★★ ()

Для начала убери 11.0.0.0 из локалки

Вики в помощь

Следующие диапазоны определены IANA как адреса, выделенные локальным сетям: IPv4[править | править вики-текст] Основная статья: IPv4#Назначения подсетей 10.0.0.0 — 10.255.255.255 (маска подсети для бесклассовой (CIDR) адресации: 255.0.0.0 или /8) 172.16.0.0 — 172.31.255.255 (маска подсети для бесклассовой (CIDR) адресации: 255.240.0.0 или /12) 192.168.0.0 — 192.168.255.255 (маска подсети для бесклассовой (CIDR) адресации: 255.255.0.0 или /16)

Также для петлевых интерфейсов (не используется для обмена между узлами сети) зарезервирован диапазон 127.0.0.0 — 127.255.255.255.

См.[3]

tyrpyr ()
Ответ на: комментарий от tyrpyr

Тогда уж, и про выделеленный диапазон под мультикаст (224 - 239 ) надо упомянуть.

ovax ★★★ ()

хм, а во что включен этот eth2 ? В отдельный vlan, в тот же коммутатор, что и eth0 или клиент подключен напрямую ?

Я бы глянул на «arp -an» во время работы проблемного адреса из 172.20.77.0/24

vel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.