LINUX.ORG.RU

OpenVPN на OpenWRT в локальной сети - роутинг

 , ,


0

2

Коллеги,

Помогите, неделю бьюсь безрезультатно ...

СЕРВЕР

VDS с белым адресом 5.101.66.xxx

На нем поднят сервер OpenVPN с сетью 192.168.2.0

Прописана маршрутизация: iptables -A FORWARD -i venet0:0 -p tcp --dport 801 -j ACCEPT

iptables -t nat -A PREROUTING -d 5.101.66.xxx -p tcp -m tcp --dport 801 -j DNAT --to-destination 192.168.2.5:801

iptables -t nat -A POSTROUTING -d 192.168.2.5 -p tcp -m tcp --dport 801 -j SNAT --to-source 5.101.66.xxx

Сервер присваивает клиенту адрес 192.168.2.5 и успешно его пингует.

КЛИЕНТ

Домашняя локальная сеть 192.168.1.0 Отдельная железка на OpenWRT с поднятым OpenVPN клиентом. Смотрит сразу в локальную сеть. У железки два логических интерфейса - один на eth0.1 со статикой 192.168.1.240, другой tun0 (192.168.2.5)

Firewall мне тут не нужен, оба интерфейса помещены в сегмент LAN (?).

Из железки пингуется шлюз VPN 192.168.2.1 (т.е. VPN поднят успешно) и все компы из сетки 192.168.1.0

ЗАДАЧА

На Win7 компе в локалке с адресом 192.168.1.3 поднят web сервер на порту 801, нужно чтобы он был всем виден через VPN на VDS по адресу 5.101.66.xxx:801

ПРОБЛЕМА

Как не прописывал маршрутизацию (варианты даже приводить не буду), так и не удалось из локалки 192.168.1.0 достучаться до 192.168.2.0.

Штука в том что даже если поднять lighttpd на 801 порту на этой же железке, он не виден по адресу 5.101.66.xxx:801

Если на компе в локалке поднять виндовый OpenVPN клиент (без отдельной железки), то все работает, но это мне не подходит ...

iptables -A FORWARD -i venet0:0 -p tcp --dport 801 -j ACCEPT

- ни разу не маршрутизация.

"-i venet0:0" - двадцать раз объясняли почему почему не будет работать.

«ip ro get 192.168.1.3» на сервере при подключенном клиенте что говорит? или просто «ip ro»

на впн-сервере есть в конфиге что-то типа «push route 192.168.1.0 255.255.255.0» и в ccd клиента «iroute 192.168.1.0 255.255.255.0» ?

про венду совсем непонятно. «iptables -t nat -A PREROUTING -d 5.101.66.xxx -p tcp -m tcp --dport 801 -j DNAT --to-destination 192.168.2.5:801» а у венды 192.168.1.3

«iptables -t nat -A POSTROUTING -d 192.168.2.5 -p tcp -m tcp --dport 801 -j SNAT --to-source 5.101.66.xxx» вообще нафиг не нужен.

на vds-е форвардинг включен ? (sysctl net.ipv4.ip_forward)

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

Спасибо за ответ !

Насчет VDS я более-менее уверен ибо:

1. wget 192.168.2.5:801/index.htm с консоли VDS пишет нет соединения, даже если web сервер поднят на самой железке. А ping 192.168.2.5 есть. Эта же команда с консоли железки проходит. Роутинг ни при чем ?

2. Как я говорил, без железки, через клиент на винде работает. Правило «iptables -t nat -A PREROUTING -d 5.101.66.xxx -p tcp -m tcp --dport 801 -j DNAT --to-destination 192.168.2.5:801» в этом случае срабатывает т.к. клиент поднимает на винде свой интерфейс 192.168.2.5, и web сервер привязывается к обоим.

Дело в железке с OpenWRT + OpenVPN, в недоступности tun0 извне. Я правильно понимаю что если не нужен firewall то все интерфейсы можно поместить в LAN зону и ничего блокироваться не будет ? Могу конфигурацию железки прислать, скажите только что именно.

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

P.S. ip ro говорит

root@vps7769:~# ip ro get 192.168.1.3

192.168.1.3 dev venet0 src 5.101.66.xxx cache mtu 1500 advmss 1460 hoplimit 64

root@vps7769:~# ip ro

192.168.2.0/24 dev tun11 proto kernel scope link src 192.168.2.1 default dev venet0 scope link

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

замечательно. На сервре просто тупо нет маршрута в сеть 192.168.1.0/24

На сколько я помню, маршрутизация в подсети клиента нормально работает только с «dev tap» & «topology subnet»

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

vel, Вы меня пожалуйста простите за тупость, я в маршрутизации совсем ламер ((

1. Если нет маршрута в 192.168.1.0, то почему не работает с web сервером на железке который по идее висит на 192.168.2.5 ?

2. Маршрут на сервере в 192.168.1.0 должен выглядеть так ?

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1

Проблема в том что там Printunl, а не обычный openvpn, я так понял для него /etc/openvpn/ccd/ c iroute похоже не катит ...

3. Можно для совсем тупых: почему маршрут в 192.168.1.0 нужно прописывать на сервере, а не на клиенте ? В моем понимании на клиенте д.б. маршрут 192.168.1.0 -> 192.168.2.0, а на сервере 192.168.2.0 -> внешний IP

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

1. Если нет маршрута в 192.168.1.0, то почему не работает с web сервером на железке который по идее висит на 192.168.2.5 ?

а на openwrt порты в iptables открыты/проброшены?

Маршрут на сервере в 192.168.1.0 должен выглядеть так ?

«192.168.1.0/24 via 192.168.2.5 dev tunX»

или

«192.168.1.0/24 dev tunXX»

3. Можно для совсем тупых: почему маршрут в 192.168.1.0 нужно прописывать на сервере, а не на клиенте ?

Таблица маршрутизации у всех узлов сети должна соответствовать реальности.

Клиент и так подключен к этой сети, он о ней все что нужно знает, а серверу нужно пояснить, что эта подсеть подключена через такое-то сетевое устройство или доступно через шлюз с адресом 192.168.2.5. Иначе пакеты в сеть клиента уйдут через шлюз по-умолчанию сервера, т.е. совсем в другую сторону.

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

На сервере сделал

ip route add 192.168.1.0/24 via 192.168.2.5 dev tun11

Не знаю уж что это дало ...

На OpenWRT оба интерфейса в LAN сегменте, я ж говорил что firewall не нужен, я так понимаю iptables к нему относится.

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

«ip ro» на openwrt ужно смотреть ну и tcpdump в помощь.

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