Перейти к содержанию

Настройка VPN через iptables


Рекомендуемые сообщения

Собствено, не получается протолкнуть через файервол VPN. При отключенном iptables VPN коннектится, но тогда вся сетка без Инет.

Вопрос: как протолкнуть через iptables VPN?

Конфиг iptables:

*filter 
:FORWARD DROP [0:0] 
:INPUT DROP [0:0] 
:RH-Firewall-1-INPUT - [0:0] 
:OUTPUT DROP [0:0] 
-A INPUT -j RH-Firewall-1-INPUT 
-A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT 
-A INPUT -d 127.0.0.1 -j ACCEPT 
-A INPUT -d 192.168.0.1 -j ACCEPT 
-A INPUT -p tcp -m tcp -d 89.20.45.247 --dport 1194 -j ACCEPT 
-A INPUT -p tcp -m tcp -d 89.20.45.247 --dport 25 -j ACCEPT 
-A INPUT -p tcp -m tcp -d 89.20.45.247 --dport 80 -j ACCEPT 
-A INPUT -p udp -m udp --sport 53 -j ACCEPT 
-A INPUT -p udp -m udp --dport 53 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT 
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT 
-A INPUT -p udp -m udp --dport 67 -j ACCEPT 
-A INPUT -p gre -s 192.168.0.0/255.255.255.0 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT 
-A INPUT -p tcp -m tcp -i eth0 --dport 1723 -j ACCEPT 
-A INPUT -p tcp -m tcp -i eth1 --dport 1723 -j ACCEPT 
-A INPUT -p gre -i eth0 -j ACCEPT 
-A INPUT -p gre -i eth1 -j ACCEPT 
-A INPUT -p gre -j ACCEPT 
-A INPUT -s 192.168.0.0/255.255.255.0 -i ppp+ -j ACCEPT 
-A FORWARD -j ACCEPT 
-A FORWARD -i eth1 -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -m state -i eth0 -o ppp+ --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -m state -i eth1 -o ppp+ --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -s 127.0.0.1 -j ACCEPT 
-A OUTPUT -s 192.168.0.1 -j ACCEPT 
-A OUTPUT -s 89.20.45.247 -j ACCEPT 
-A OUTPUT -p udp -m udp --dport 68 -j ACCEPT 
-A OUTPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT 
-A RH-Firewall-1-INPUT -i lo -j ACCEPT 
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT 
-A RH-Firewall-1-INPUT -p esp -j ACCEPT 
-A RH-Firewall-1-INPUT -p ah -j ACCEPT 
-A RH-Firewall-1-INPUT -p udp -m udp -d 224.0.0.251 --dport 5353 -j ACCEPT 
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT 
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 21 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 2049 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 22 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p udp -m state -m udp --dport 137 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p udp -m state -m udp --dport 138 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 139 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 445 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 47 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 23 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 80 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 443 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 25 --state NEW -j ACCEPT 
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 
COMMIT 
# Completed on Mon Mar 23 20:07:03 2009 
# Generated by iptables-save v1.3.8 on Mon Mar 23 20:07:03 2009 
*mangle 
:PREROUTING ACCEPT [8509:2054645] 
:INPUT ACCEPT [7260:1504251] 
:FORWARD ACCEPT [697:505140] 
:OUTPUT ACCEPT [1566:281305] 
:POSTROUTING ACCEPT [2263:786445] 
COMMIT 
# Completed on Mon Mar 23 20:07:03 2009 
# Generated by iptables-save v1.3.8 on Mon Mar 23 20:07:03 2009 
*nat 
:PREROUTING ACCEPT [1253:169674] 
:POSTROUTING ACCEPT [1:60] 
:OUTPUT ACCEPT [131:14609] 
-A PREROUTING -s 192.168.0.0/255.255.255.0 -i ppp0 -j DROP 
-A POSTROUTING -o ppp0 -j MASQUERADE 
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source 89.20.45.247 
COMMIT
Ссылка на комментарий
Поделиться на другие сайты

xetter писал(а) Tue, 24 March 2009 10:53

-A OUTPUT -s 127.0.0.1 -j ACCEPT

-A OUTPUT -s 192.168.0.1 -j ACCEPT

-A OUTPUT -s 89.20.45.247 -j ACCEPT

-A OUTPUT -p udp -m udp --dport 68 -j ACCEPT

-A OUTPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT

Выпускать пакеты нужно и с внешнего интерфейса, и с ppp0.

А вообще лучше все заново переписать. Удивляюсь, как такой фаревол раньше работал.

Ссылка на комментарий
Поделиться на другие сайты

xetter писал(а) Tue, 24 March 2009 14:44

А не могли бы Вы посоветовать правильную конфигурацию?

В данном случае может быть поможет

iptables -A OUTPUT -p ALL -j ACCEPT

А вообще берите в руки классическое руководство

http://www.opennet.ru/docs/RUS/iptables/

и вперед.

Ссылка на комментарий
Поделиться на другие сайты

Конфигурация фаера хоть и перегруженная, но вполне рабочая. Дело не в этом.

На каком интерфейсе висит VPN-сервер? Если на том, что отвечает за сеть 192.168.0.0/24, то оно работать и не будет. Начинается путаница, то ли в туннель пускать пакеты, то ли натить. Поэтому и не работает. Во всяком случае, у меня так было. Решил просто - повесил на интерфейс алиас из другой локалки, который и слушал VPN-сервер. В итоге одна подсеть работал просто через NAT, другая по VPN.

Ссылка на комментарий
Поделиться на другие сайты

  • 7 месяцев спустя...

с этого момента по-подробнее!

У меня локальный интерфейс eth0 192.168.1.1/16 и на него я повесил впн-сервер 100.100.100.1/24.

ВПН-туннели создаются, но в нет не пускает.

А Вы предлагаете на eth0 cоздать влан eth0.10 200.200.200.1/24 и на него повесить впн-сервер?

И что тогда, какие у нас преимущества?

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

IF_PPP - ppp+

NET_PPP - впн-подсеть (100.100.100.0/24 у меня, например)

IF_LOCAL - eth0 (интерфейс в локальную сеть)

DHCP_NET - у меня адреса в сети раздаются по dhcp - адреса локальной сети (у меня 192.168.0.0/16)

IF_PR1 - интерфейс наружный (eth1)

IP_PR1 - адрес наружного интерфейса

${FW} -A INPUT -i $IF_PPP -s $NET_PPP -j ACCEPT

${FW} -A INPUT -i $IF_LOCAL -s $DHCP_NET -p gre -j ACCEPT

Главное правило, пропускать пакеты для установления соединения

${FW} -A INPUT -i $IF_LOCAL -s $DHCP_NET -p tcp --dport 1723 -j ACCEPT

${FW} -A OUTPUT -o $IF_PPP -d $NET_PPP -j ACCEPT

${FW} -A OUTPUT -o $IF_LOCAL -d $DHCP_NET -p gre -j ACCEPT

${FW} -A OUTPUT -o $IF_LOCAL -d $DHCP_NET -p tcp --sport 1723 -j ACCEPT

${FW} -A OUTPUT -o $IF_LOCAL -d $DHCP_NET -p udp --sport 1723 -j ACCEPT

${FW} -A FORWARD -i $IF_PPP -s $NET_PPP -d 0/0 -j ACCEPT

${FW} -A FORWARD -s 0/0 -d $NET_PPP -o $IF_PPP -m state --state ESTABLISHED,RELATED -j ACCEPT

Для каждой цепочки (INPUT, OUTPUT, FORWARD) поставить правила в начала или вместо "A" ставить "I"

Не забудь NAT:

${FW} -t nat -A POSTROUTING -s $NET_PPP -o $IF_PR1 -j SNAT --to-source $IP_PR1

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...