Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: iptables для перенаправления VPN и прозрачного прокси  (Прочитано 74823 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tonny_Bennet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Здравствуйте. Есть Ubuntu Server 10.4 работающий в качестве интернет-шлюза, на нём крутится Squid.
ppp0 193.105.33.35 смотрит наружу (статический внешний IP)
eth0 192.168.0.10 смотрит внутрь

В мануале по настройке sqid был скрипт 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 трафик из внешки на локальную машину 192.168.0.100 (она когда то была шлюзом и на ней крутится VPN сервер под 2003 виндой)

Нашёл в интернете статейку по перенаправлению портов. Там расписан такой скрипт

#!/bin/bash
EXT_IP="193.105.33.35" # Он всё равно чаще всего один и тот же.
INT_IP="192.168.0.10" # См. выше.
EXT_IF=ppp0 # Внешний и внутренний интерфейсы.
INT_IF=eth0 # Для шлюза они вряд ли изменятся, поэтому можно прописать вручную.
LAN_IP=192.168.0.100   # Локальный адрес сервера передаём скрипту первым параметром,
SRV_PORT=47,1723 # а тип сервера, в смысле какой порт (или набор портов) открывать - вторым

# Здесь желательно сделать проверку ввода данных, потому что операции достаточно серьёзные.
iptables -t nat -A PREROUTING --dst $EXT_IP -p tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
iptables -t nat -A POSTROUTING --dst $LAN_IP -p tcp --dport $SRV_PORT -j SNAT --to-source $INT_IP
iptables -t nat -A OUTPUT --dst $EXT_IP -p tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP
iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p tcp -m tcp --dport $SRV_PORT -j ACCEPT


пробовал его дописать к своему.... не заработало. при подключении ВПН клиента возникае ошибка. В логах винды указано что нет доступа по протоколу GRE.  При сканировании nmap-ом самого себя или виндовой машины открытого 47 порта нет.

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

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
47 это не порт, это номер протокола GRE
в иптаблесах вроде надо включать подержку gre
root@ubuntu:~# locate gre | grep module
/lib/modules/2.6.32-21-generic/kernel/net/ipv4/ip_gre.ko
/lib/modules/2.6.32-21-generic/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
/lib/modules/2.6.32-21-generic/kernel/net/netfilter/nf_conntrack_proto_gre.ko
/lib/modules/2.6.32-21-generic/kernel/net/sched/sch_gred.ko
/lib/modules/2.6.32-21-generic/kernel/net/sched/sch_ingress.ko

хз что конкретно из этого.
« Последнее редактирование: 10 Июля 2010, 12:35:07 от censor »

Оффлайн Tonny_Bennet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Тут http://www.opennet.ru/base/net/vpn_tunnel.txt.html написано что нужно включать GRE так:
insmod ip_gre


У меня не работает :(((

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
modprobe ip_gre

Оффлайн Tonny_Bennet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Добавил строчку. Всё равно не подключается. Подскажите куда копать? Как диагностировать? Что я делаю не так?

Скрипт nat

#!/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

modprobe ip_gre
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.37.96 -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


Так проходит перезапуск интерфейсов
 * Reconfiguring network interfaces...                                                       There is already a pid file /var/run/dhclient.eth1.pid with pid 6520
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth1/00:24:1d:ca:8d:83
Sending on   LPF/eth1/00:24:1d:ca:8d:83
Sending on   Socket/fallback
ssh stop/waiting
ssh start/running, process 6838
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth1/00:24:1d:ca:8d:83
Sending on   LPF/eth1/00:24:1d:ca:8d:83
Sending on   Socket/fallback
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 9
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 20
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 15
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 10
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
ssh stop/waiting
ssh start/running, process 6917
Plugin rp-pppoe.so loaded.
RP-PPPoE plugin version 3.8p compiled against pppd 2.4.5
ssh stop/waiting
ssh start/running, process 6969
                                                                                      [ OK ]


Пользователь решил продолжить мысль 10 Июля 2010, 13:58:32:
тут нашёл как разрешить gre http://www.ylsoftware.com/news/407
добавил ещё 2 правила

iptables -A INPUT -p gre -j ACCEPT

iptables -A OUTPUT -p gre -j ACCEPT

всё равно не работает.... Windows говорит

Тип события:   Предупреждение
Источник события:   Rasman
Категория события:   Отсутствует
Код события:   20209
Дата:      10.07.2010
Время:      13:48:25
Пользователь:      Н/Д
Компьютер:   VPN_SERVER
Описание:
Связь между 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".
« Последнее редактирование: 10 Июля 2010, 13:58:32 от Tonny_Bennet »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Если решишь - пиши. Я так и не смог настроить.
Забил и научил людей пользоваться SCP.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Tonny_Bennet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Спасибо за оптимизм :)

Просто в принципе есть необходимость объединения 2-х офисов. Я это делал при помощи винды (того самого win2003). Под линуксом не получилось сделать нормальный тунель (на другой стороне канала winXP). Решил просто сделать перенаправление портов. А тут на этом дело не остановилось.... можеть всё же найдётся гуру iptables на этом форуме...

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
OpenVPN или L2TP
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Tonny_Bennet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Пробовал сделать при помощи pptpd - но в нём нельзя прописывать роуты в сторону клиентов. В описании openvpn вроде было можно. поставил. как то криво. удалинть норамльно не получилось. пришлось переставить сервер

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
чтобы не переустанавливать сервер:
1. делаем резервные копии всех изменяемых файлов
2. если что-то надо потестить или поучиться настраивать, заведите виртуальную машину где можно будет тренироваться в настройке без последствий для реальной системы.

Оффлайн snaker

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
этого мало. ну примет гре-пакет - и что? она их и так принимает. нужно ещё указать, куда их потом девать. так примерно:
iptables -t nat -A PREROUTING -i %интерфейс% -p gre -j DNAT --to 192.168.0.100 ну и, чтобы нормально натить pptp, нужно ещёmodprobe ip_nat_pptp

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Ващет gre идёт на локальный интерфейс...
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Tonny_Bennet

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
чтобы не переустанавливать сервер:
1. делаем резервные копии всех изменяемых файлов
2. если что-то надо потестить или поучиться настраивать, заведите виртуальную машину где можно будет тренироваться в настройке без последствий для реальной системы.

Да я сохранял ... вот  только косяки наверное во время установки возникали.... У openvpn слишком много заморочек с сертификатами и т.д.


Потанцевал с бубном почитал маны и пришёл к выводу что это задница.... попил чайку..... и всё заработало  :)

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


(Нажмите, чтобы показать/скрыть)

Скрипт NAT + PortForwarding

(Нажмите, чтобы показать/скрыть)


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

Может это и не совсем правильно но это всё прекрасно работает :) Офисные даже не заметили как перешли на линуксовый шлюз :)

 

Страница сгенерирована за 0.031 секунд. Запросов: 23.