LINUX.ORG.RU

VPN + NAT


0

0

Такая ситуёвина:

клиент1 ---|             \|/  WaveLan  \|/
           |----раутер----|             |------провайдер
клиент2 ---|
           |
           .
           .
           .
клиентN ---|


У клиентов сеть 192.168.1.XXX

У раутера адрес гейта локалки 192.168.1.1
Адрес гейта в инет 192.168.10.3
Адрес гейта у провайдера 192.168.10.1

Как работало раньше:

На раутере стоял WinXP

Был поднят 'общий доступ', все коннектились к 192.168.10.1 через 192.168.1.1

Потом я снес нафик этот оффтопик и поставил linux.

Поднял NAT.

Натятся TCP,UDP,ICMP, из локалки все нормально.

Вроде все работает, НО

Рассмотрим ситуацию 1:


Клиент1 решил выйти в инет.
запустил свой вендовый VPN-клиент.
При этом он законнектился нормально на 192.168.10.1 через NAT по TCP на порт 1723.
Сервер и клиент договорились об авторизации, сжатии, etc.
От сервера появился ответ о готовности VPN к приему GRE пакетов.
Клиент и сервер нормально обмениваются GRE.
Все работает нормально.

Рассмотрим ситуацию 2.


include ситуация1 :)
Клиент2 тоже решил выйти в инет.
При этом он законнектился нормально на 192.168.10.1 через NAT по TCP на порт 1723.
Сервер и клиент договорились об авторизации, сжатии, etc.
От сервера появился ответ о готовности VPN к приему GRE пакетов.
НО... тут то и лажа:

Когда я смотрю tcpdump-ом на интерфейсе wlan0
Пакеты gre идут от 192.168.10.1 на 192.168.10.3
и от 192.168.1.22 (например, клиент2) на 192.168.10.1

А то, что они натятся, не видно, не вижу пронатченные пакеты от 192.168.1.22 на 192.168.10
.1  (192.168.10.3 -> 192.168.10.1)
Хотя 1-й клиент при этом нормально натится и юзает инет.



Что хочется добавить, что на WinXP с его так называемым общимм доступом все работало при о
дновременном коннекте многих клиентов.

Вот что я прописал:

iptables -P FORWARD ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -o eth0 -j ACCEPT
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -A FORWARD -o wlan0 -j ACCEPT

iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -o eth0 -i wlan0 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wlan0 -j SNAT --to-source 192.168.10.3

Пробывал вместо SNAT маскарад, эффект тот же.

Ядро 2.4.26
Все модули, связанные с netfilter в ядро подгружены.

Что я неправильно сделал ?
anonymous

А какие адреса получают юзеры после получения IP по VPN? Ты их тоже должен НАТить. Вернее только их.

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

> А какие адреса получают юзеры после получения IP по VPN? Ты их тоже должен НАТить. Вернее только их.

А при чем тут эти адреса ? Или обмен GRE идет именно по этим IP-м, которые клиенту выдал VPN ?

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

Дык погоди, то что выдается vpn-ом, уже в gre-инкапсуляции.

Их не нужно натить, там уже vpn позаботится, нужно лишь первоначальный нат сделать.

fuzk
()

Попробуй сделать так:

1) Упрости файервол немого:

iptables -P FORWARD ACCEPT  

после этого уже не нужно ничего акцептить, тк уже полиси акцепт стоит

2) Убери конкретизацию сорс-ИП, так ты избавишься он зарезаных сорс-ИП:
iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to-source 192.168.10.3

То, что пройдет на выход по раутингу - будет натится, зато это гарантия, что будет работать, 
а то если у тебя например IP-ы из 90-й сетки например, то они уже не попадают в -s 192.168.1.0/24

Как только поймешь, что нада натить, можно уже и закрывать сетки.

А по другому ты не поймаешь тигра в пустыне. :=)

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