LINUX.ORG.RU
ФорумAdmin

Помогите объединить 2 сети через PPTP


0

1

День добрый.

1 сеть - офис: 192.168.1.0/24 2 сеть - домашний роутер с openwrt и внешним адресом, и за ним сеть 192.168.2.0/24

в сети 1 есть сервер под ubuntu 12.04, который не имеет внешнего адреса в сети интернет.

ubuntu имеет адрес 192.168.1.48 и через pptp подключается к роутеру сети 2, имея адрес 192.168.2.200

задача получить доступ к компьютерам сети 1 с компьютера сети 2.

Если из сети 2 подключать VPN то есть доступ только к серверу сети 1, так как он тоже подключен к VPN.

скину любые конфиги


Если pptp подключается, то остаётся настроить только машрутизацию. И тут уже вам решать, что проще, прописывать маршруты на компьютерах в обоих сетях или где-то делать SNAT.

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

pptp подключается, компьютеров в сети 1 немного, можно и маршруты там прописать.

Делаю на машине 1 сети:

C:\Windows\system32>route add -p 192.168.2.0 mask 255.255.255.0 192.168.1.48 ОК

IPv4 таблица маршрута =========================================================================== Активные маршруты: Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.3 276 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 192.168.1.0 255.255.255.0 On-link 192.168.1.3 276 192.168.1.3 255.255.255.255 On-link 192.168.1.3 276 192.168.1.255 255.255.255.255 On-link 192.168.1.3 276 192.168.2.0 255.255.255.0 192.168.1.48 192.168.1.3 21 224.0.0.0 240.0.0.0 On-link 127.0.0.1 306 224.0.0.0 240.0.0.0 On-link 192.168.1.3 276 255.255.255.255 255.255.255.255 On-link 127.0.0.1 306 255.255.255.255 255.255.255.255 On-link 192.168.1.3 276 =========================================================================== Постоянные маршруты: Сетевой адрес Маска Адрес шлюза Метрика 0.0.0.0 0.0.0.0 192.168.1.1 По умолчанию 192.168.2.0 255.255.255.0 192.168.1.48 1 ===========================================================================

Начинаю видеть сервер с адресом 192.168.2.200, компы сети 2 не вижу.

какое правило нужно прописать на сервере с клиентом pptp, чтобы он передавал с ppp12 на eth0 ?

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

Интерфейсы сервера сети1

eth0 Link encap:Ethernet HWaddr 44:8a:5b:5c:ae:23 inet addr:192.168.1.48 Bcast:192.168.1.255 Mask:255.255.255.0

ppp12 Link encap:Протокол PPP (Point-to-Point Protocol) inet addr:192.168.2.200 P-t-P:192.168.0.1 Mask:255.255.255.255

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

Если я правильно понял схему вашей сети, то на 192.168.1.48 нужно:
1. Включить маршрутизацию (″sysctl -w net.ipv4.ip_forward=1″). Eсли нужно на постоянно, то редактировать /etc/sysctl.conf.

2. Если запрещено, разрешить прохождение пакетов в iptables (″iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT″ и аналогично правило для пакетов в обратном направлении). Если нужно на постоянно, то поставить пакет iptables-persist и редактировать файл iptables-save.

3. Прописать машрут через ppp интерфейс (″ip route add 192.168.2.0/24 via 192.168.2.200 dev ppp12″). Маршрут исчезнет при обрыве связи, поэтому его нужно прописывать в скриптах ppp (/etc/ppp/ip-up), но как именно сейчас не скажу.

На маршрутизаторе с openwrt, в принципе, аналогичные действия, разве что маршрутизация там и так должна быть включена, правила iptables прописывать в /etc/firewall.user и маршрут нужно писать к сети 192.168.1.0/24.

После этого с 192.168.1.3 должен пинговаться локальный ip-адрес маршрутизатора с openwrt, и, вероятно, и другие устройсьтва в сети 92.168.2.0/24, так как на них скорее всего маршрут по умолчанию прописан через этот маршрутизатор.

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

Спасибо огромное, буду пробовать!

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

Все получилось с компа сети1 вижу локальный адрес роутера сети2:

Ethernet adapter Подключение по локальной сети: IPv4-адрес. . . . . . . . . . . . : 192.168.1.3(Основной)

Обмен пакетами с 192.168.2.1 по с 32 байтами данных: Ответ от 192.168.2.1: число байт=32 время=13мс TTL=63 Ответ от 192.168.2.1: число байт=32 время=10мс TTL=63 Ответ от 192.168.2.1: число байт=32 время=10мс TTL=63

Собственно главная задача выполнена, теперь я могу выбрасывать порты (rdp) на внешний мир из сети без внешнего адреса.

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

При обрыве VPN соединения на openwrt (pptpd) слетает маршрут на сеть1: route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.200 ppp0

Я добавил на VPN сервере (openwrt pptpd) в /etc/ppp/ip-up.d/ скрипт rt:

#!/bin/sh if [ «$4» = «192.168.2.200» ]; then 
route add -net 192.168.1.0 netmask 255.255.255.0 gw $4 ppp0 
fi

но при переподключении клиента маршрут не добавляется.

Есть ли возможность запустить скрипт при подключении pptp клиента ?

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

Начинайте проверять по порядку.
1. В файле /etc/ppp/ip-up действительно скрипт, запускающий всё из каталога /etc/ppp/ip-up.d
2. На ваш скрипт /etc/ppp/ip-up.d/rt установлено через ″chmod″ право на исполнение
3. Если добавить в скрипт простую команду типа:

echo "$1 - $2 - $3 - $4 - $5 - $6" >>  /tmp/ppp-test
то после подключения ppp файл /tmp/ppp-test не создаётся.
4. Вместо ″route″ указать полный путь к команде (или переменную среды PATH).

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

спасибо за наводку, вывод в /tmp/ppp-test:

ppp0 - /dev/pts/0 - 115200 - 10.0.0.10 - 192.168.2.200 - 91.190.115.253

а /etc/ppp/ip-up.d/rt.sh:

#!/bin/sh
if [ "$4" = "192.168.2.200" ]; then
route add -net 192.168.1.0 netmask 255.255.255.0 gw $4 $1
fi

поменял условие для «если» c $4 на $5 и все заработало.

Остается только вопрос можно ли зарезервировать выдаваемый адрес для pptp клиента?

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

Если в файле pptpd.conf не указывать диапазон адресов для pptp клиентов, то pppd будет выдавать клиентам адреса, указанные в /etc/ppp/chap-secrets (в четвёртом поле). Но тогда в этом файле нужно указывать для каждого клиента свой ip-адрес.

mky ★★★★★
()
20 ноября 2014 г.
Ответ на: комментарий от mky

Всем привет! Имеется windows server 2008, с поднятым vpn (pptp), с локальным адресом 192.168.1.10 и IP по vpn 10.0.0.1. К нему подключается ubuntu server (убунту выполняет роль роутера и раздает в свою сеть интернет), через впн получая при этом адрес 10.0.0.2, со стороны ubuntu локальная сеть имеет адреса 192.168.0.х.

Вопрос, какой маршрут нужно прописать, чтоб пк со стороны убунту роутера получили доступ к данным сервера на винде?

Убунту роутер цепляется по впн к серверу на винде пинги по впн адресу (10.0.0.х) идут в обе стороны, со стороны убунту ни один ПК не пингует сервер по адресу 10.0.0.1.

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

Если ubuntu является шлюзом по умолчанию для своей сети (192.168.0.х), то тогда не хватает только маршрута к 192.168.0.х через 10.0.0.2 на 2008 сервере. Причём, это маршрут, по идее, должен быть прописан дваждый, один раз в системных таблицах маршрутизации, другой раз в openvpn-сервере через директиву ″iroute″.

Ну или делайте SNAT на ubunt'е.

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

Если я правильно понял то нужно прописать на windows server 2008 маршрут:

route add 192.168.0.0 255.255.255.0 10.0.0.2

либо на ubuntu server:

iptables -t nat -A POSTROUTING -d ! 192.168.0.0 -j SNAT —to-source 10.0.0.1

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

Вроде правильно, но я не помню как пишутся маршруты в оффтопике, а относительно SNAT, нужно ″—to-source 10.0.0.2″ и, логичнее, делать SNAT на ″-d 10.0.0.1″, а не на ″-d ! 192.168.0.0 ″.

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

прописал следующим образом:

iptables -t nat -A POSTROUTING -d 10.0.0.2 -j SNAT —to-source 10.0.0.1

где 10.0.0.2 - IP ubuntu server 10.0.0.1 - IP windows server

результат - ПК со стороны ubuntu не пингуют сервер по 10.0.0.1

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

Запускаете ping с клиентской машины, запускаете tcpdump на сервере ubuntu на tun0 (openvpn) интерейсе, смотрите какие icmp-пакеты видно. Запускаете как-то так:

sudo /sbin/tcpdump -n -nn -i tun0 icmp

Если пакетов вобще нет, возможно сервер с ubuntu «режет» их в iptables, в цепочке FORWARD. Маршрутизация, думаю, у вас включена, раз ubuntu работает шлюзом в Инет.

И это всё имеет смысл, после того, как вы удалите это ваше SNAT правило и пропишете правильное правило, так как вам нужен SNAT пакетов, идущих на сервер 10.0.0.1, то ″-d 10.0.0.1″, а в ″--to-source″ должен быть ip-адрес Ubuntu-сервера, как я уже написал в предыдущем посте.

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