LINUX.ORG.RU
ФорумAdmin

NAT и несколько VPN - соединений: помогите решить проблему


0

0

Поднят сервер на ASPLinux 10. В нем две сетевые карты. Одна смотрит в локальную сеть 192.168.0.0/24, другая во внешнюю 10.0.4.68/255.255.255.252 Провайдер дает Инет по VPN. Естественно, на сервере поднят NAT, разрешен в IPTables порт 1723 и протокол GRE. Пока учетная запись была одна - проблем не было. Но решили разделить отделы и посадить каждый на свою учетку. Первый канал поднимается без проблем, но как только пытаешься поднять второй канал, доходит дело только до авторизации (висит сообщение "Поверка имени пользователя и пароля") и рвется первое соединение. Дальше дело не идет. Попробовал обновить IPTables до версии 1.3.3. Стало чуть лучше (предыдушее соединение перестало обрываться), но второе так и не авторизуется. Если на сервере остановить IPTables, а потом стартовать заново через какое-то короткое время, то иногда удается поднять и второе соединение. Чую, что проблема в IPTables, но не пойму где. Или нереально поднять больше одного VPN в таких условия или я чего-то упускаю. Рабочие станиции на Windows XP professional. Вот скрипт для настройки IPTables: #!/bin/bash #****************************************************** # Предопределения #****************************************************** # Для инета # Сетевой инет-интерфейс INET_IFACE="eth1" INET_IP="10.0.4.70"

# Для локальной стороны # Сетевой интерфейс, свзязанный с локалкой LAN_IFACE="eth0" # IP-адрес "локального" сетевого интерфеса LAN_IP="192.168.0.1" # Диапазон ip-адресов локальной подсети LAN_IP_RANGE="192.168.0.0/24"

# Для внутренних дел (интерфейс обратной петли) # Название LO_IFACE="lo" # IP-адрес LO_IP="127.0.0.1"

# Ускоренное обращение к утилитам IPTABLES="/sbin/iptables" DEPMOD="/sbin/depmod" MODPROBE="/sbin/modprobe"

#****************************************************** # Загрузка модулей, отвечающих за работу фильтрации #****************************************************** $DEPMOD -a $MODPROBE ip_tables $MODPROBE iptable_nat $MODPROBE iptable_filter $MODPROBE ipt_state $MODPROBE ip_gre

#****************************************************** # Работаем с таблицей filter #****************************************************** # Определение политик по умолчанию $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD DROP

#ICMP $IPTABLES -N icmp-packets $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 $IPTABLES -A icmp-packets -p ICMP --icmp-type 12 -j ACCEPT $IPTABLES -A icmp-packets -p ICMP -j DROP

$IPTABLES -A INPUT -p ICMP -j icmp-packets $IPTABLES -A FORWARD -p ICMP -j icmp-packets

#Подключаем 22 порт для SSH, 137, 138,139 для SAMBA, 1723 для VPN $IPTABLES -N tcp_packets $IPTABLES -A tcp_packets -p TCP -i $LAN_IFACE --dport 22 -j ACCEPT $IPTABLES -A tcp_packets -p TCP -i $LAN_IFACE --dport 1723 -j ACCEPT $IPTABLES -A tcp_packets -p TCP -i $LAN_IFACE --dport 137 -j ACCEPT $IPTABLES -A tcp_packets -p TCP -i $LAN_IFACE --dport 138 -j ACCEPT $IPTABLES -A tcp_packets -p TCP -i $LAN_IFACE --dport 139 -j ACCEPT $IPTABLES -A tcp_packets -p TCP -j DROP

#Подключаем порт 137, 138,139 для SAMBA udp $IPTABLES -N udp_packets $IPTABLES -A udp_packets -p UDP -i $LAN_IFACE --dport 137 -j ACCEPT $IPTABLES -A udp_packets -p UDP -i $LAN_IFACE --dport 138 -j ACCEPT $IPTABLES -A udp_packets -p UDP -i $LAN_IFACE --dport 139 -j ACCEPT $IPTABLES -A udp_packets -p UDP -j DROP

#LO $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT

#bad_packets $IPTABLES -N bad_packets $IPTABLES -A bad_packets -p TCP --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP

#allowed $IPTABLES -N allowed $IPTABLES -A allowed -p TCP --syn -j ACCEPT $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A allowed -j DROP

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE -s $LAN_IP_RANGE -j udp_packets $IPTABLES -A INPUT -p TCP -i $LAN_IFACE -s $LAN_IP_RANGE -j tcp_packets $IPTABLES -A INPUT -p TCP -j bad_packets $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j DROP

#Обеспечим минимальный уровень безопасности $IPTABLES -A FORWARD -m state --state NEW -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -o $LAN_IFACE -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -o $INET_IFACE -j ACCEPT

#VPN $IPTABLES -A FORWARD -p GRE -j ACCEPT

#****************************************************** # Работаем с таблицей nat #******************************************************

#****************************************************** # Таблица nat - стандартная цепочка POSTROUTING #****************************************************** # Включаем пересылку и маскирование (маскарад) адресов локальной сети #$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -j SNAT --to-source $INET_IP


Попроси у провайдера задаром нереальную подсетку типа 10.*.*.0/24, ему ведь этого добра не жалко, не так ли? И NATь свои отделы в разные адреса этой подсети.

Вся эта фигня из-за того, что пров видит несколько соединений к своему VPN-серверу от одного адреса 10.0.4.70, а PPTP этого не переносит.

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

Надо просто модуль подгрузить, а что за он я не помню :/. Что-то типа ip_conntrac_nat и все будет пучком.

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

У меня ядро 2.6.9 и в нем такого модуля нет. Из похожих есть следующие: ip_conntrack_amanda ip_conntrack_ftp ip_conntrack_irc ip_conntrack_proto_sctp ip_conntrack_tftp.

Kitten
() автор топика
Ответ на: комментарий от ansky

>Вся эта фигня из-за того, что пров видит несколько соединений к >своему VPN-серверу от одного адреса 10.0.4.70, а PPTP этого не >переносит.

извините, но это вы бред сказали .... я админ того провайдера... сам ставлю по желанию клиентам шлюзы на FreeBSD... всё заводится с полпинка и пашет как часы ... проблема не стоит выеденого яйца...

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

>Вся эта фигня из-за того, что пров видит несколько соединений к >своему VPN-серверу от одного адреса 10.0.4.70, а PPTP этого не >переносит.

>извините, но это вы бред сказали

Не совсем бред! Мне выделили один айпи и нужно было поднять два VPN-соединения. Поднимаю первый канал - всё отлично. Поднимаю второй канал - всё отлично, но первый канал падает! (сам ppp0 оставался висеть, работал только ppp1). Три дня перебирал настройки, варианты, способы подключения, ничего не получилось!

Решилось так:
Провайдер поднял другой VPN-сервер с другим айпи.
Теперь всё работает прекрасно. Ура! ^_^

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

Все решается очень просто: обновляемся до ASPLinux 11, ядро 2.6.14. В скрипте подключаем модуль ip_conntract_pptp (в ASPLinux 10, ядро 2.6.9 его нет) и вуаля!!! Второе соедиение поднимается, первое не обрывает, и все работает. Всем спасибо.

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

Исправляю ошибку: модуль называется ip_conntrack_pptp.

Kitten
() автор топика
Ответ на: комментарий от SlavikSS

>извините, но это вы бред сказали

>Не совсем бред! Мне выделили один айпи и нужно было поднять два VPN-соединения. Поднимаю первый канал - всё отлично. Поднимаю второй канал - всё отлично, но первый канал падает! (сам ppp0 оставался висеть, работал только ppp1). Три дня перебирал настройки, варианты, способы подключения, ничего не получилось!

>Решилось так: Провайдер поднял другой VPN-сервер с другим айпи. Теперь всё работает прекрасно.

н укак же не совсем? :) Если у вашего провайдера так пашет VPN-сервак (так настроен и перенастроить не судьба), то это не значит что > что пров видит несколько соединений к своему VPN-серверу от одного адреса 10.0.4.70, а PPTP этого не переносит...

PPTP всё прекрасно переносит ... а для решения этого пустяка поднимать другой VPN-сервак - это однако очень Вумное решение ... :)

ну да ладно ... каждый веселится как может/хочет

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