The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Снова VPN & маршрутизация, !*! Gleb, 02-Май-06, 15:02  [смотреть все]
Hi, All!

Есть сети:
сеть A: 192.168.1.0/24(внутренние адреса, 192.168.1.1 - шлюз) 1.2.3.4(внешний адрес)
сеть B: 192.168.2.0/24(внутренние адреса, 192.168.2.1 - шлюз) 2.3.4.5(внешний адрес)

Задача: пользователи сети A могли пользоваться ресурсами сети B

На 2.3.4.5(сеть B) поднят VPN-сервер(mpd)
VPN-клиенту назначается IP: 192.168.2.100

из виндовых машин сети A(192.168.1.0/24) устанавливается VPN-соединение и ресурсы сети B доступны.

теперь необходимо поднять VPN-соединение на шлюзе сети A(192.168.1.1)
т.е. пользователь, ничего у себя не настраивая, использовал ресурсы сети B и ресурсы инета

pptpclient:

ppp.conf
--------
vpn:
set authname MyLogin
set authkey MyPass
set timeout 120
set ifaddr 0 0
add 192.168.2.0/24 HISADDR
alias enable yes
--------
устанавливаем VPN-соединение
# pptp 2.3.4.5 vpn&

Все работает как надо сеть B доступна из сети A и инет наместе :)

mpd:

mpd.conf
--------
default:
        load vpn

vpn:
        new -i ng8 vpn vpn
        set iface route 192.168.2.0/24
        set bundle authname "MyLogin"
        set bundle password "MyPass"
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        set pptp peer 2.3.4.5
        set pptp enable originate incoming outcall
        open
--------

mpd.links
--------
vpn:
        set link type pptp
--------

Здесь ситуация складывается иначе
VPN-соединение устанавливается, но ресурсы сети B доступны только с шлюза(192.168.1.1),
но из локальной сети А сеть B недоступна

Начинаю копать.

Ищю отличия между соединениями pptpclient и mpd
# netstat -nr
(pptpclient)
..............
192.168.2         192.168.2.1       UGSc        0        0   tun0
192.168.2.1       192.168.2.100     UH          1        0   tun0
..............
(mpd)
..............
192.168.2         192.168.2.1       UGSc        0        0    ng0
192.168.2.1       192.168.2.100     UH          1        0    ng0
192.168.2.100     lo0               UHS         0        0    lo0
..............


# ifconfig
(pptpclient)
..............
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 192.168.2.100 --> 192.168.2.1 netmask 0xffffffff
        Opened by PID 44655
..............
(mpd)
..............
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.2.100 --> 192.168.2.1 netmask 0xffffffff
..............


Трассировка с клиентских машин сети A:
c:\>tracert -d 192.168.2.1
Трассировка маршрута к 192.168.2.1 с максимальным числом прыжков 30
(pptpclient)
  1    <1 мс    <1 мс    <1 мс  192.168.1.1
  2    43 ms    43 ms    45 ms  192.168.2.1
(mpd)
  1    <1 мс    <1 мс    <1 мс  192.168.1.1
  2     *        *        *     Превышен интервал ожидания для запроса.
  3     *        *        *     Превышен интервал ожидания для запроса.
..............

c:\>tracert -d ya.ru
Трассировка маршрута к ya.ru [213.180.204.8] с максимальным числом прыжков 30:
  1    <1 мс    <1 мс    <1 мс  192.168.1.1
  2     3 ms     3 ms     3 ms  1.2.3.x (IP провайдера)
..............
  X     4 ms     3 ms     4 ms  213.180.204.8
Трассировка завершена.

Одинакова для pptpclient и mpd

Разница вывода 'netstat -nr'
кроме интерфейсов tun0 и ng0 в mpd добавилась строка
192.168.2.100     lo0               UHS         0        0    lo0
Что, собственно, логично

Разница вывода 'ifconfig'
В mpd добавились 2 интересных параметра NOARP, SIMPLEX
Может в них подвох?

Копаем глубже.

С клиенских машин сети A пингуем сеть B
c:\>ping -t 192.168.20.1
На машине с VPN-сервером запускаем
# tcpdump -pni ng0 -p icmp
И что явижу!

при запущеном VPN-клиенте pptpclient
10:57:07.095553 192.168.2.100 > 192.168.2.1: icmp: echo request
10:57:07.095883 192.168.2.1 > 192.168.2.100: icmp: echo reply
10:57:08.096375 192.168.2.100 > 192.168.2.1: icmp: echo request
10:57:08.096703 192.168.2.1 > 192.168.2.100: icmp: echo reply
10:57:13.593846 192.168.2.100 > 192.168.2.1: icmp: echo request
10:57:13.594175 192.168.2.1 > 192.168.2.100: icmp: echo reply

при запущеном VPN-клиенте mpd
10:56:09.084633 192.168.1.101 > 192.168.2.1: icmp: echo request
10:56:14.585967 192.168.1.101 > 192.168.2.1: icmp: echo request
10:56:20.086753 192.168.1.101 > 192.168.2.1: icmp: echo request
Нет ответа от VPN-сервера - его и не будет,
ведь запрос идет с адресом клиентской машины(192.168.1.101) а не VPN-клиента(192.168.2.100)
Если на машине VPN-сервера прописать маршрут к сети A
# route add -net 192.168.1.0/24 192.168.20.100
то все начинает работать,
даже более того, теперь не только сеть B доступна из сети A,
но и сеть A доступна из сети B, что не входило в мою задачю ;)

Вывод:
pptpclient маскарадит внутренние адреса
mpd - нет.
Буду маскарадить "в ручную"

добавляю в mpd.conf VPN-клиента две строки
.....................
        set iface up-script /usr/local/etc/mpd/if-up.sh
        set iface down-script /usr/local/etc/mpd/if-down.sh
.....................
if-up.sh
---------
#!/bin/sh
/sbin/natd -u -p 8669 -n $1
/sbin/ipfw add 00051 divert 8669 ip from any to any via $1
---------

if-down.sh
---------
#!/bin/sh
/bin/kill -9 `ps ax |awk '$5~/natd/ && $0~/-p 8669/ {print $1}'`
/sbin/ipfw delete 00051
---------

т.е. при конекте поднимаю natd на порту 8669 и интерфейсе ng0($1)
и, соответственно добавляю строку в firewall
При дисконекте - обратная процедура

И достигается нужный результат - запросы идут не с адреса клиентской машины(192.168.1.101), а с VPN-клиента(192.168.2.100)
Но выглядет это, как-то крючковато.


Есть ли стандартный параметр 'mpd.conf', который все это делает?
Что означают параметры NOARP, SIMPLEX в выводе 'ifconfig'?
Как pptpclient маскарадит внутренние адреса(для общего развития)?

Буду благодарен за любые советы и высказывания.

  • Снова VPN & маршрутизация, !*! weldpua2008, 21:43 , 02-Май-06 (1)
    Как Я понял, надо что бы без НАТА виделась вторая Сеть?

    В общем Я посмотрел mpd.conf У Тебя, там нету:
    set iface enable proxy-arp
    По идеи это даст возможность видеть вторую Сеть...
    Так же была тут сттейка как настроить 2-е Сети через ВПН, что бы Они были видны

    • Снова VPN & маршрутизация, !*! Gleb, 09:32 , 03-Май-06 (2)
      >Как Я понял, надо что бы без НАТА виделась вторая Сеть?
      >
      >В общем Я посмотрел mpd.conf У Тебя, там нету:
      >set iface enable proxy-arp
      >По идеи это даст возможность видеть вторую Сеть...
      >Так же была тут сттейка как настроить 2-е Сети через ВПН, что
      >бы Они были видны


      Пробывал, спасибо,
      Мне с самого начала эта опция приглянулась - не помогает.
      Все равно пакеты идут с обратным адресом локальной сети, а не VPN-клиента :(

      Может я где-то накосячил?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру