PDA

Показать полную графическую версию : [решено] iptables для перенаправления VPN и прозрачного прокси


Tonny_Bennet
10-07-2010, 14:41
Здравствуйте. Есть Ubuntu Server 10.4 работающий в качестве интернет-шлюза, на нём крутится Squid.
ppp0 193.105.33.35 смотрит наружу (статический внешний IP)
eth0 192.168.0.10 смотрит внутрь

В мануале по настройке sqid был скрипт iptables который в принципе работает нормально. (NAT и заворачивание трафика на интерфейс squid) Но помимо прокси ещё нужно завернуть VPN трафик из внешки на локальную машину 192.168.0.100 (она когда то была шлюзом и на ней крутится VPN сервер под 2003 виндой)

Вот скрипт iptables

#!/bin/sh
# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
# Включаем NAT
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT
# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth0 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.10:3128

#Заворачиваем трафик VPN сервера на Win2003

modprobe ip_gre
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
iptables -t nat -A PREROUTING --dst 193.105.33.35 -p tcp --dport 1723 -j DNAT --to-destination 192.168.0.100
iptables -t nat -A POSTROUTING --dst 192.168.0.100 -p tcp --dport 1723 -j SNAT --to-source 192.168.0.10
iptables -t nat -A OUTPUT --dst 193.105.33.35 -p tcp --dport 1723 -j DNAT --to-destination 192.168.0.100
iptables -I FORWARD 1 -i ppp0 -o eth0 -d 192.168.0.100 -p tcp -m tcp --dport 1723 -j ACCEPT

При создании VPN на внешний IP 193.105.33.35 появляется ошибка 721
В логах 2003 сервера пишется:

Тип события: Предупреждение
Источник события: Rasman
Категория события: Отсутствует
Код события: 20209
Дата: 10.07.2010
Время: 14:34:38
Пользователь: Н/Д
Компьютер: HIGHLANDER
Описание:
Связь между VPN-сервером и VPN-клиентом 192.168.0.10 была установлена, но не удалось завершить установку VPN-подключения. Наиболее вероятная причина - брандмауэр или маршрутизатор между VPN-сервером и VPN-клиентом не разрешает передачу пакетов GRE (Generic Routing Encapsulation) протокола 47. Проверьте, что брандмауэры и маршрутизаторы между этим VPN-сервером и Интернетом разрешают GRE-пакеты. Проверьте, что брандмауэры и маршрутизаторы в сети пользователя также разрешают GRE-пакеты. Если проблема сохраняется, обратитесь к вашему поставщику услуг Интернета (ISP) чтобы проверить, не происходит ли блокирование GRE-пакетов поставщиком.

Дополнительные сведения можно найти в центре справки и поддержки, в "http://go.microsoft.com/fwlink/events.asp".


При подключении на интерфес VPN сервера 192,168,0,100 из локальной сети - коннект проходит удачно

Пожалуйста помогите разобраться

lxa85
10-07-2010, 21:52
Tonny_Bennet, Посмотри порядок выполнений правил.
У меня подозрение, что пакеты "заворачиваются" не успев дойти до разрешающего правила.

Tonny_Bennet
10-07-2010, 23:37
А как это проверить если не секрет?

lxa85
11-07-2010, 16:27
man iptables :)

-S, --list-rules [chain]
Print all rules in the selected chain. If no chain is selected, all chains are printed like iptables-save.
Like every other iptables command, it applies to the specified table (filter is the default).

-L, --list [chain]
List all rules in the selected chain. If no chain is selected,
all chains are listed. Like every other iptables command, it
applies to the specified table (filter is the default), so NAT
rules get listed by
iptables -t nat -n -L
Please note that it is often used with the -n option, in order
to avoid long reverse DNS lookups. It is legal to specify the

Tonny_Bennet
12-07-2010, 10:17
Вот нашёл решение похожей проблемы
http://www.traffpro.ru/forum/topic_969

Но мне немного не понятно что в роли источника и что в роли сервера. Сделал так

iptables -t nat -A PREROUTING -p tcp -s 0/0 -d 193.105.33.35 --dport 1723 -j DNAT --to-destination 192.168.0.10:1723
iptables -A FORWARD -i eth0 -d 192.168.0.10 -p tcp --dport 1723 -j QUEUE

iptables -t nat -A PREROUTING -p 47 -s 0/0 -d 193.105.33.35 -j DNAT --to-destination 192.168.0.10

iptables -A FORWARD -i eth0 -d 192.168.0.10 -p 47 -j QUEUE


Всё равно работать не хочет

Tonny_Bennet
12-07-2010, 21:49
Потанцевал с бубном почитал маны и пришёл к выводу что это задница.... попил чайку..... и всё заработало :)

Сетевые интерфейсы

# Интерфейс локальной сети
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
#маршруты в VPN сети
up route add -net 192.168.3.0/24 gw 192.168.0.100 eth0
up route add -net 192.168.2.0/24 gw 192.168.0.100 eth0


#Интерфейс смотрит в сторону провайдера Интернета
auto eth1
iface eth1 inet dhcp

#PPPoE
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider dsl-provider

#запуск NAT и Port-forwarding
post-up /etc/network/nat


Скрипт NAT + PortForwarding

#!/bin/sh

# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT

# Включаем NAT
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT

#Заворачиваем трафик VPN сервера на Win2003

#Модули iptables
modprobe ip_conntrack_ftp
modprobe ip_gre
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp

#Дальше устроим проброс портов
#Организация проброса pptp трафика во внуть сети.
iptables -A FORWARD -p gre -j ACCEPT

iptables -t nat -A PREROUTING --dst 193.105.33.35 -p tcp --dport 1723 -j DNAT --to-destination 192.168.0.100
iptables -t nat -A POSTROUTING --dst 192.168.0.100 -p tcp --dport 1723 -j SNAT --to-source 192.168.0.10
iptables -t nat -A OUTPUT --dst 193.105.33.35 -p tcp --dport 1723 -j DNAT --to-destination 192.168.0.100
iptables -I FORWARD 1 -i ppp0 -o eth0 -d 192.168.0.100 -p tcp -m tcp --dport 1723 -j ACCEPT

# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth0 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.10:3128


P.S. машина 192.168.0.100 - это VPN сервер под Win2003




© OSzone.net 2001-2012