Jump to content
Sign in to follow this  
xetter

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

Recommended Posts

Собствено, не получается протолкнуть через файервол 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

Share this post


Link to post
Share on other sites

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.

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

Share this post


Link to post
Share on other sites

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

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

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

iptables -A OUTPUT -p ALL -j ACCEPT

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

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

и вперед.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...