URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 2725
[ Назад ]

Исходное сообщение
"И вновь vpn через nat "

Отправлено mylan , 16-Май-06 16:59 
Машина с Linux является шлюзом в инет, соответственно имеет два интерфейса eth0 - в инет и eth1 в локалку. Для точности надо упомянуть и маршрутизатор cisco 2621 между провайдером и линухой, как он запрограммирован я не знаю. Стоит задача подключиться извне к одному из локальных компов используя vpn-pptp (WinXP->WinXp). Задача вроде как сегодня распространенная. Ядро 2.4.18. По ходу удалось сделать доступным для инета iis одного из локальных компов добавлением по сути одного правила в iptables
*nat
-A PREROUTING -p tcp -d $LIN_EXT_IP --dport 1717 -j DNAT --to-destination 192.168.1.1
где на порт 1717 настроен iis локальной машины, а 192.168.1.1 - ее ip

Ну, второе правило
*filter
-A FORWARD -i eth0 -d 192.168.1.1 -p tcp --dport 1717 -j ACCEPT

уже было до нас.

Подключился к инет через модем, ввел в браузере $LIN_EXT_IP:1717  -  и увидел родную домашнюю страничку нашего локального iis.
Теперь самое время проделать тоже с vpn. Делаем все по инструкции:
*nat
-A PREROUTING -p tcp -d $LIN_EXT_IP --dport 1723 -j DNAT --to-destination 192.168.1.1
-A PREROUTING -d $LIN_EXT_IP -p 47 -j DNAT --to-destination 192.168.1.1
*filter
-A FORWARD -i eth0 -j ACCEPT

Подключился к инет через модем, создаем vpn подключение и... запиваем холодной водой.
TCPView на машине 192.168.1.1 на несколько секунд показывает попытки подключения строкой типа
locname.domain.suf:1253  $LIN_EXT_IP:pptp   SYN_SENT
команда iptables -t nat -nvxL на линуксе показывает
Chain PREROUTING
  pkts  bytes target prot opt in  out source     destination
     1     48 DNAT   tcp  --  *   *   0.0.0.0/0  $LIN_EXT_IP tcp dpt:1723 to:192.168.1.1
Т.е. один пакет проходит и на этом все... :(
Подскажите, пожалуйста, что еще нужно?
  


Содержание

Сообщения в этом обсуждении
"И вновь vpn через nat "
Отправлено mylan , 18-Май-06 12:50 
Уточнения: tcpview - это я сморозил, показывал пакет отправленный по модему. Ethereal показал, что на сетевой интерфей локальной машины не приходит ни одного пакета. Хотя листинг iptables утверждает следующее:

Chain PREROUTING (policy ACCEPT 342137 packets, 35872611 bytes)
  pkts   bytes target  prot opt in  out  source destination
     1      48 DNAT    tcp  --  *   *    0/0    $LIN_EXT_IP tcp dpt:1723 to:192.168.1.1
     0       0 DNAT     47  --  *   *    0/0    $LIN_EXT_IP              to:192.168.1.1
...
Chain FORWARD (policy DROP 0 packets, 0 bytes)
  pkts    bytes target     prot opt in     out    
  2       96    ACCEPT     all  --  eth0   eth1

Непонятно, почему пакеты прошедшие цепочку forward не достигают локальной машины и почему их два?  :(


"И вновь vpn через nat "
Отправлено mylan , 18-Май-06 15:52 
Так вот они нормально достигали локальной машины. Просто был неправильно настроен фильтр снифера. Каюсь. Но ответ локальная машина не отправляла, поскольку не знала куда. Сеть источника то чужеродная. Очевидно в доках на эту тему считают, что у всех в мире в настройках ip протокола шлюзом настроен ip роутера. Так вот в нашем случае шлюзом был совершенно непричастный ко всем этим проблемам сервак, служащий другим, не менее благородным целям. Короче, решилась проблема добавлением еще двух правил в iptables:
-A POSTROUTING -d 192.168.1.1 -p tcp --dport 1723 -j SNAT --to-source $LIN_LOC_IP
-A POSTROUTING -d 192.168.0.30 -p 47 -j SNAT --to-source $LIN_LOC_IP
Меняющие в пакетах и адрес источника.
Возможно, сработал бы и вариант добалвения еще одного шлюза в настройках локального компа.
Спасибо всем за помощь. :)