The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Нужна помощь по настройке iptables"
Отправлено LonelyBeast, 26-Янв-12 15:41 
Здравствуйте.

Подскажите пожалуйста как мне правильно настроить iptables.

У меня установлен сервер Ubuntu 11.10 x64. На нем установлено 2 сетевых карты:

eth0 (213.xxx.xxx.xxx) — внешний интерфейс
eth1 (192.168.99.1 ) - внутренний интерфейс, локальная сеть 192.168.99.0/24

Выход в интернет осуществляется через pppoe (интерфейс ppp0), с динамическим адресом. Внутри туннеля pppoe провайдер заворачивает на меня пул из 5 статических ip адресов  213.xxx.xxx.xxx/28.
На интерфейсе eth0 с ip адреса  213.xxx.xxx.xxx поднят IP SEC VPN туннель с Cisco ASA (ip 83.xxx.xxx.xxx), за которой находится локальная сеть (192.168.1.0/24).
При запуске сервера у меня выполняются вот такие настройки для iptables

# !/bin/sh
#Включаем ip forward
echo 1 > /proc/sys/net/ipv4/ip_forward

#Добавляем роутинг на локальные сети для VPN
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.99.1

# Настраиваем iptables
INET_IP="213.xxx.xxx.xxx"
INET_DMZ="213.xxx.xxx.xxx/28"
LOCAL_NET="192.168.99.0/24"
ASA_IP="83.xxx.xxx.xxx"
VPN_LOCAL_NET="192.168.1.0/24"


#Сбрасываем настройки
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F

#Почта
iptables -A INPUT -i eth0 -p tcp -d $INET_IP --dport 25 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -d $INET_IP --dport 993 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -d $INET_IP --dport 465 -j ACCEPT

#ssh
iptables -A INPUT -i eth0 -p tcp -d $INET_IP --dport 22 -j ACCEPT

#разрешаем ходить траффику между интерфейсами (тут я не уверен)
iptables -A FORWARD -s $LOCAL_NET -i eth1 -j ACCEPT
iptables -A FORWARD -d $LOCAL_NET -o eth1 -j ACCEPT

iptables -A FORWARD -s $LOCAL_NET -i eth0 -j ACCEPT
iptables -A FORWARD -d $LOCAL_NET -o eth0 -j ACCEPT

#разрешаем нужные порты для VPN туннеля
iptables -A INPUT -p udp -i eth0 -s $VPN_ASA_IP --sport 500 --dport 500 -j ACCEPT
iptables -A OUTPUT -p udp -o eth0 -d $VPN_ASA_IP --sport 500 --dport 500 -j ACCEPT

iptables -A INPUT -p esp -i eth0 -s $VPN_ASA_IP -j ACCEPT
iptables -A OUTPUT -p esp -o eth0 -d $VPN_ASA_IP -j ACCEPT

iptables -A INPUT -p ah -i eth0 -s $VPN_ASA_IP -j ACCEPT
iptables -A OUTPUT -p ah -o eth0 -d $VPN_ASA_IP -j ACCEPT

iptables -A INPUT -i eth0 -s $VPN_ASA_IP -j DROP
iptables -A OUTPUT -o eth0 -d $VPN_ASA_IP -j DROP


#настраиваем нат для VPN (без этого удаленная сеть недоступна)
iptables -t nat -A POSTROUTING -s $LOCAL_NET -d $VPN_LOCAL_NET -o ppp0 -j SNAT --to-source 192.168.99.1


#настраиваем нат для локальной сети, включая сам сервер. При этом сервера из $INET_DMZ будут ходить со совими реальными ip адресами
iptables -t nat -A POSTROUTING ! -s $INET_DMZ -o ppp0 -j SNAT --to-source $INET_IP

#Запрещаем все что не разрешено
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j LOG --log-level 7 --log-tcp-options
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,ACK SYN -j REJECT --reject-with icmp-port-unreachable

iptables -A FORWARD -o eth0 -p tcp -j DROP
iptables -A FORWARD -o eth1 -p tcp -j DROP

После выполнения этого скрипа iptables выглядит вот так:

root@ss:~# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
SNAT       all  --  192.168.99.0/24      192.168.1.0/24      to:192.168.99.1
SNAT       all  -- !213.xxx.xxx.xxx/28   0.0.0.0/0           to:213.xxx.xxx.xxx

root@ss:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-dovecot  tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 80,443,25,465,110,995,143,993,4190
fail2ban-postfix  tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 80,443,25,465,110,995,143,993,4190
fail2ban-roundcube  tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 80,443,25,465,110,995,143,993,4190
fail2ban-ssh  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            213.xxx.xxx.xxx     tcp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            213.xxx.xxx.xxx     tcp dpt:993
ACCEPT     tcp  --  0.0.0.0/0            213.xxx.xxx.xxx     tcp dpt:465
ACCEPT     tcp  --  0.0.0.0/0            213.xxx.xxx.xxx     tcp dpt:22
ACCEPT     udp  --  83.xxx.xxx.xxx        0.0.0.0/0           udp spt:500 dpt:500
ACCEPT     esp  --  83.xxx.xxx.xxx        0.0.0.0/0          
ACCEPT     ah   --  83.xxx.xxx.xxx        0.0.0.0/0          
DROP       all  --  83.xxx.xxx.xxx        0.0.0.0/0          
LOG        tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x13/0x02 LOG flags 2 level 7
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x13/0x02 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     all  --  192.168.99.0/24      0.0.0.0/0          
ACCEPT     all  --  0.0.0.0/0            192.168.99.0/24    
ACCEPT     all  --  192.168.99.0/24      0.0.0.0/0          
ACCEPT     all  --  0.0.0.0/0            192.168.99.0/24    
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0          
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0          

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     udp  --  0.0.0.0/0            83.xxx.xxx.xxx       udp spt:500 dpt:500
ACCEPT     esp  --  0.0.0.0/0            83.xxx.xxx.xxx      
ACCEPT     ah   --  0.0.0.0/0            83.xxx.xxx.xxx      
DROP       all  --  0.0.0.0/0            83.xxx.xxx.xxx      

Chain fail2ban-dovecot (1 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          

Chain fail2ban-postfix (1 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          

Chain fail2ban-roundcube (1 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          

Теперь о том, что я хочу — я хочу чтобы трафик из подсети 192.168.99/24 проходил до удалённой подсети 192.168.1.0/24 без ната. Как мне это сделать? Если я убираю запись

iptables -t nat -A POSTROUTING -s $LOCAL_NET -d $VPN_LOCAL_NET -o ppp0 -j SNAT --to-source 192.168.99.1

то у меня получается следующее: пакет уходит от 192.168.99.2 → 192.168.99.1 → 192.168.1.2
а вот потом он приходит так 192.168.1.2 →  213.xxx.xxx.xxx →  192.168.99.2.
Естественно, что при этом ничего не работает, т. к. ответ приходит не от того ip с которого его ждали …. Что у меня неправильно?

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру