Страница 1 из 1

NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-28 11:13:25
tisugol
Cервер FBSD 9.2 + MPD5 (l2tp) + Racoon (ipsec) + еще всякой дряни.
Подключение к провайдеру через Ethernet (dhcp) - белый айпи.

Не могу никак настроить, чтобы внешние клиенты (Win7) ползали по интернету через сервер (анонимизация трафика)
Как я понимаю скорее всего какой нибудь ... с pf.conf... нат дописать? или... Помогите

Код: Выделить всё

 cat /etc/pf.conf
#################################     NETWORKS ####### 
ext_if="dc0" #Интерфейс к провайдеру
int_if="msk0" #Внутренний интерфейс -квартирная сеть
vpn_if="{ ng0, ng1, ng2, ng3, ng4 }"
nora="172.16.5.0/24" #Квартирная сеть
icmp_types="{echoreq, unreach}"

#################################     BASE
set block-policy drop
set loginterface $ext_if

scrub in all
#################################     QUEUE
altq on $ext_if hfsc bandwidth 50Mb queue { ack, std, tor, srv, lan }
queue ack          bandwidth 25% priority 8 qlimit 500 hfsc (realtime 20%)
queue lan          bandwidth 25% priority 7 qlimit 500 hfsc (realtime 20%)
queue std          bandwidth 25% priority 6 qlimit 500 hfsc (realtime 20% default)
queue srv          bandwidth 14% priority 5 qlimit 500 hfsc (upperlimit 98%)
queue tor          bandwidth 11% priority 1 qlimit 500 hfsc (upperlimit 90%)

#################################     NAT
nat on $ext_if from !self to any -> ($ext_if)
#################################     DEFAULT BLOCK
block log all

set skip on lo0

# Traffic from gateway
pass out on $ext_if from ($ext_if) to any flags S/SA modulate state queue (std,ack)

# Traffic from LAN to INET
pass out quick on $ext_if from $nora to any queue (lan,ack)

#################################     PPTP
pass in on $ext_if inet proto { tcp udp } from any to (self) port {500 1701 1723 4500}
pass in on $ext_if inet proto esp
pass in on $ext_if inet proto gre
##################################     Transmission
pass out quick on $ext_if proto { tcp udp } all user transmission queue tor

#################################     Server ports 
pass in on $ext_if proto tcp from any to ($ext_if) port { 80 443 563  } synproxy state queue (web,ack)

#################################     ICMP
pass log inet proto icmp all icmp-type $icmp_types
#################################     ALLOW LOCAL
pass quick on $int_if all
pass quick on $vpn_if all

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-28 12:34:44
werder31
1) при создании на клиентах впн подключения, ставте галочку - использовать шлюз по умолчанию
2) в пф разрешите всё через интерфейсы ngX

Ну соответственно я бы сеть в впн-е поставил бы такой же как и локалки.

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-28 13:36:17
tisugol
werder31 писал(а):1) при создании на клиентах впн подключения, ставте галочку - использовать шлюз по умолчанию
2) в пф разрешите всё через интерфейсы ngX

Ну соответственно я бы сеть в впн-е поставил бы такой же как и локалки.
1. стоит
2. Правила привел. Вроде все разрешено
3. Выделен диапазон 172.16.5.200-210 т.е фактически тот же что и в локалке.

А результата нет... (

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-28 16:19:56
gumeniuc
показывайте ipconfig клиента, трассировку и pfctl -ss.

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-30 18:56:10
tisugol
Внутриквартирные ресурсы доступны

ipconfig /all

Код: Выделить всё

Настройка протокола IP для Windows

   Имя компьютера  . . . . . . . . . : S1-W7
   Основной DNS-суффикс  . . . . . . : hola.hopgroup.com
   Тип узла. . . . . . . . . . . . . : Гибридный
   IP-маршрутизация включена . . . . : Нет
   WINS-прокси включен . . . . . . . : Нет
   Порядок просмотра суффиксов DNS . : hola.hopgroup.com
                                       hopgroup.com
                                       hopgroup.com

Адаптер PPP lemz:

   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : lemz
   Физический адрес. . . . . . . . . :
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да
   IPv4-адрес. . . . . . . . . . . . : 172.16.5.200(Основной)
   Маска подсети . . . . . . . . . . : 255.255.255.255
   Основной шлюз. . . . . . . . . : 0.0.0.0
   DNS-серверы. . . . . . . . . . . : 172.16.5.3
   NetBios через TCP/IP. . . . . . . . : Включен

Адаптер беспроводной локальной сети Беспроводное сетевое соединение:

   DNS-суффикс подключения . . . . . : hopgroup.com
   Описание. . . . . . . . . . . . . : Intel(R) WiFi Link 1000 BGN
   Физический адрес. . . . . . . . . : 99-E5-99-EE-61-9E
   DHCP включен. . . . . . . . . . . : Да
   Автонастройка включена. . . . . . : Да
   Локальный IPv6-адрес канала . . . : вырезан(Основной)
   IPv4-адрес. . . . . . . . . . . . : 10.4.25.200(Основной)
   Маска подсети . . . . . . . . . . : 255.255.255.0
   Аренда получена. . . . . . . . . . : 30 октября 2013 г. 9:38:22
   Срок аренды истекает. . . . . . . . . . : 6 ноября 2013 г. 9:38:26
   Основной шлюз. . . . . . . . . : 10.4.25.254
   DHCP-сервер. . . . . . . . . . . : 10.4.25.254
   IAID DHCPv6 . . . . . . . . . . . : 376759563
   DUID клиента DHCPv6 . . . . . . . : 00-хх-хх-01-17-2E-ED-6A-хх-хх-хх-хх-хх-2A

   DNS-серверы. . . . . . . . . . . : 120.120.23.3
                                       120.120.23.4
   NetBios через TCP/IP. . . . . . . . : Включен

Ethernet adapter Подключение по локальной сети:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : Intel(R) 82579LM Gigabit Network Connecti
on
   Физический адрес. . . . . . . . . : 00-21-CC-BE-BC-2A
   DHCP включен. . . . . . . . . . . : Да
   Автонастройка включена. . . . . . : Да

Туннельный адаптер isatap.{5401ххE6-6B11-4973-BB95-51BAFхх42878}:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : Адаптер Microsoft ISATAP #2
   Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да

Туннельный адаптер Подключение по локальной сети* 4:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : Адаптер Microsoft 6to4
   Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да

Туннельный адаптер isatap.hopgroup.com:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . : hopgroup.com
   Описание. . . . . . . . . . . . . : Адаптер Microsoft ISATAP #3
   Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да

Туннельный адаптер Подключение по локальной сети* 17:

   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : Teredo Tunneling Pseudo-Interface
   Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да
   IPv6-адрес. . . . . . . . . . . . : хх:0:хх:79fd:389f:849:хх:хх(Основ
ной)
   Локальный IPv6-адрес канала . . . : хх::хх:849:хх:fa37%23(Основной)
   Основной шлюз. . . . . . . . . : ::
   NetBios через TCP/IP. . . . . . . . : Отключен

Туннельный адаптер isatap.{6BF280C3-14F5-4013-9FCC-41A5817060F9}:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :
   Описание. . . . . . . . . . . . . : Адаптер Microsoft ISATAP #4
   Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP включен. . . . . . . . . . . : Нет
   Автонастройка включена. . . . . . : Да
Трасировка дохнет на 1ом хопе

нетстат на сервере

Код: Выделить всё

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            1.1.64.1         UGS         0    42794    dc0
1.1.64.0/19      link#2             U           0       27    dc0
1.1.95.170       link#2             UHS         0     1060    lo0
127.0.0.1          link#6             UH          0     2541    lo0
172.16.5.0/24      link#1             U           0      223   msk0
172.16.5.3         link#1             UHS         0       45    lo0
172.16.5.200       link#8             UH          0      143    ng0

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-30 19:04:08
tisugol
в pfctl-ss основное из кучи спама все соединения на .200 в статусе TIME_WAIT:TIME_WAIT

Код: Выделить всё

all tcp EXTIP:52659 (172.16.5.200:53958) -> 137.55.50.130:33033       TIME_WAIT:TIME_WAIT
all tcp EXTIP:53096 (172.16.5.200:53959) -> W7IPNAFTERNAT       TIME_WAIT:TIME_WAIT

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-30 21:29:27
gumeniuc
покажите route table на клиенте

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-31 8:42:53
tisugol
На андройде также все выглядит вполне нормально. Не сломано ли что нибудь в связке pf? Попробую ipfw ближайшее время если сообщество не подскажет идеи.

Код: Выделить всё

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0      10.4.25.254      10.4.25.200   4250
          0.0.0.0          0.0.0.0         On-link      172.16.5.200     26
     1.118.95.70  255.255.255.255      10.4.25.254      10.4.25.200   4251
        10.4.25.0    255.255.255.0         On-link       10.4.25.200   4506
      10.4.25.200  255.255.255.255         On-link       10.4.25.200   4506
      10.4.25.255  255.255.255.255         On-link       10.4.25.200   4506
        127.0.0.0        255.0.0.0         On-link         127.0.0.1   4531
        127.0.0.1  255.255.255.255         On-link         127.0.0.1   4531
  127.255.255.255  255.255.255.255         On-link         127.0.0.1   4531
     172.16.5.200  255.255.255.255         On-link      172.16.5.200    281
        224.0.0.0        240.0.0.0         On-link         127.0.0.1   4531
        224.0.0.0        240.0.0.0         On-link       10.4.25.200   4507
        224.0.0.0        240.0.0.0         On-link      172.16.5.200     26
  255.255.255.255  255.255.255.255         On-link         127.0.0.1   4531
  255.255.255.255  255.255.255.255         On-link       10.4.25.200   4506
  255.255.255.255  255.255.255.255         On-link      172.16.5.200    281
===========================================================================

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-31 9:32:37
gumeniuc
я не уверен что это будет правильно работать

Код: Выделить всё

vpn_if="{ ng0, ng1, ng2, ng3, ng4 }"
попробуйте сделать так

Код: Выделить всё

table <vpn> {  172.16.5.200, 172.16.5.201, 172.16.5.202,... }
pass from <vpn> to any
ну а дальше смотрите по таблице сколько пакетов прошло по каждому хосту.

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-10-31 16:18:51
tisugol
Увы таблица не помогла. tcdump на ng0 показывает кучу пакетов поступающих от вин 7, а вот обратно тишина...

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 9:03:28
gumeniuc
Вы видите эти пакеты на dc0 ?

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 10:41:42
tisugol
Какой то взрыв мозга происходит. В локальную сеть пинг проходит, ДНС запросы проходят, но вот веб сервер на 172.16.5.3 или smb недоступны.
Перепробована тьма вещей, удалось получилось получить tracert и ping до яндекса на W7. Дальше пинга правда дело не идет :(
Самое интересное если включить в pf.conf
set optimization normal
Хождение пингов прекращается

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 11:35:52
tisugol
И да на внешнем интерфейсе пакеты видны - запросил на win7 в браузере 11.11.11.11 и в tcpdump увидел

Код: Выделить всё

 внешний IP.55399 > 11.11.11.11.http: Flags [S], seq 487728899, win 8192, options [mss 1260,nop,nop,sackOK], length 0
12:32:28.719072 IP внешнийIP.57453 > 11.11.11.11.http: Flags [S], seq 952997544, win 8192, options [mss 1260,nop,nop,sackOK], length 0
12:32:28.969346 IP внешнийIP.60671 > 11.11.11.11.http: Flags [S], seq 2247018526, win 8192, options [mss 1260,nop,nop,sackOK], length 0

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 11:56:13
gumeniuc
на внешнем видно запросы, но не видно ответы. 11.11.11.11 так ничего и не ответил ?
но вот веб сервер на 172.16.5.3 или smb недоступны
172.16.5.3 - это кто ?

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 12:20:07
tisugol
172.16.5.3 это и есть домашний сервер на котором все поднято (vpn, smb, dns и.т.д)
.200 это vpn клиент W7.

Запрашиваем yandex.ru на w7.
В pfctl -ss видим

Код: Выделить всё

all tcp внеш_IP:55219 (172.16.5.200:57379) -> кажется яндекс:80       ESTABLISHED:SYN_SENT
и при этом в tcpdump pflog0

Код: Выделить всё

13:13:08.311202 IP yandex.ru.http > [b]172.16.5.200.57339[/b]: Flags [S.], seq 2743666145, ack 2122447, win 17820, options [mss 8910,nop,nop,sackOK,nop,wscale 10], length 0
Последняя итерация pf.conf

Код: Выделить всё

ext_if="dc0"
int_if="msk0"
vpn_if="{ ng0, ng1 }"
nora="172.16.5.0/24"
icmp_types="{echoreq, unreach}"
table <vpn> {  172.16.5.200, 172.16.5.201, 172.16.5.202 }


set block-policy drop
set loginterface $ext_if
scrub in all

nat on $ext_if from !self to any -> ($ext_if)
block log all

set skip on lo0
pass out on $ext_if from ($ext_if) to any flags S/SA modulate state

pass out quick on $ext_if from $nora to any
pass quick inet from <vpn> to any

pass in on $ext_if inet proto { tcp udp } from any to (self) port {500 1701 1723 4500}
pass in on $ext_if inet proto esp
pass in on $ext_if inet proto gre

pass in on $ext_if proto tcp from any to ($ext_if) port { 80 443 563 8000}

pass log inet proto icmp all icmp-type $icmp_types

pass quick on $int_if all
pass quick on $vpn_if all

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 12:46:18
gumeniuc
сделайте 2 дампа одновременно на dc0 и ng0 при обращении куда-нибудь.

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 14:18:49
tisugol
Поднял по быстрому pptp сервер. Все отлично работает. Отсюда делаем наверное вывод о проблемах в ipsec-tools | racoon или возможно NAT-T. PF тут не причем получается

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 18:13:17
gumeniuc
так а клиенты как подключаются ?

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-01 23:35:04
tisugol
Штатными l2tp + ipsec клиентами.
Nat-t в BSD в туннеле нереализован. Для этого и все патчи ядра/ipsec надо попробовать их заново накатить на свежие исходники

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-11 14:08:04
Dmitriy_3206
У Вас есть строка

Код: Выделить всё

# Traffic from LAN to INET
pass out quick on $ext_if from $nora to any queue (lan,ack)
Нет явного (и не явного) разрешения на выход с других подсетей.
Вам советуют использовать таблицы с диапазоном адресов. Я именно так и делаю.
Используем метарасширение ng0:network - заменяется сетевым блоком CIDR
или ng0:peer - заменяется peer IP адресом другой стороны point-to-point линка

Код: Выделить всё

table <trust_comp> {  int_if:network, ng0:peer, ng1:peer, ng2:peer, ng3:peer, ng4:peer }
.................
# Traffic from LAN to INET
pass out quick on $ext_if from <trust_comp> to any queue (lan,ack)

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-11-11 17:20:10
tisugol
Вывод пока один. Nat PF + NAT-T = что то сломано. Как я писал выше - была бы проблема в правилах pf - не пускал бы pptp трафик. Переход на ipfw+ipfw nat в мгновение ока решил все проблемы.

Re: NAT для VPN - Настройка pf.conf

Добавлено: 2013-12-16 0:42:48
co6aka
Возможно дело в mtu, вернее в mss. По крайней мере момент, когда по тунелю ходят короткие пакеты и не ходят большие очень похож.