LINUX.ORG.RU
решено ФорумAdmin

openvpn route


0

0

Проблема такая:
Есть машина A, на ней локальная сеть прова, пусть будет 10.71.192.0/18. Соеденяю её средствами openvpn с машиной B. Таким вот образом (Пока без шифровки, в качестве проверки просто):

openvpn --dev tap --ifconfig 192.168.2.1 255.255.255.0 --port X --verb 0 ну там дальше логи и фоновый режим ...
В итоге на машине А, стартует интерфейс tap1. 192.168.2.1/24

На машине В стартую OpenVpn так:

openvpn --remote АДРЕС_МАШИНЫ_А --dev tap --ifconfig 192.168.2.2 255.255.255.0 --port X --route 10.71.192.0 255.255.192.0 192.168.2.1 ну и так далее логи, логи ошибок.

Мне нужно чтобы машина B имела доступ к сети 10.71.192.0/18.
В качестве решения данной проблемы на машине A я сделал следующие:
включил форвадинг - /proc/sys/net/ipv4/ip_forward - стоит 1
Ну в таблицу автоматом добавилась запись

Destination     Gateway         Genmask       Iface
192.168.2.0     0.0.0.0         255.255.255.0   tap0
Ну естественно маршруты на сеть 10.71.0.0/18 прописаны также как и были.
В iptables добавил несколько правил
iptables -t filter -A INPUT -p udp --dport X -j ACCEPT
iptables -t filter -A FORWARD -i tap+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 10.71.192.0/18 -j MASQUERADE

Обе машины успешно пингуют друг друга, все работает нормально, самба ну и другие различные сетевые утилиты. Но Машина B не может получить доступ в сеть 10.71.192.0/18.
Что я упустил ?



Последнее исправление: demsi (всего исправлений: 2)

Мне нужно чтобы машина B имела доступ к сети 10.71.0.0/18
Но Машина A не может получить доступ в сеть 10.71.0.0/18

Ты сумел меня запутать, держи 3 респекта

Показывай с обеих тачек
ip a
ip r
Плюс с А (или всё-таки В?) показывай
ip r g 10.71.0.0/18

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

Но Машина A не может получить доступ в сеть 10.71.0.0/18

А исправил на B
Также еще сеть неправильно указал. Сеть не 10.71.0.0/18 а 10.71.192.0/18
Так заново объясняю:
Машина A

Имеет локальную сеть провайдера
eth0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:10.71.234.105  Bcast:10.71.255.255  Mask:255.255.192.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15309546 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2044880 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:710169632 (677.2 Mb)  TX bytes:644458374 (614.6 Mb)
Через eth0 имеет доступ к интернету по протоколу pptp
ppp0      Link encap:Point-to-Point Protocol
          inet addr:X.X.X.X P-t-P:X.X.X.X  Mask:255.255.255.255
          UP POINTOPOINT RUNNING MULTICAST  MTU:1400  Metric:1
          RX packets:1144668 errors:0 dropped:0 overruns:0 frame:0
          TX packets:641301 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:1476860176 (1408.4 Mb)  TX bytes:33254818 (31.7 Mb)
Средствами openvpn соединена c машиной В
tap0      Link encap:Ethernet  HWaddr 00:FF:69:1D:CD:43
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:133 errors:0 dropped:0 overruns:0 frame:0
          TX packets:99 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:14824 (14.4 Kb)  TX bytes:14143 (13.8 Kb)
Машина B имеет доступ в интернет, и также соединена с машиной A с помощью openvpn. Адрес машины B 192.168.2.2 ( vpn)

Мне нужно чтобы машина B имела доступ к сети 10.71.192.0/18.
10.71.192.0/18 - локальная сеть машины A

Теперь что в итоге получилось:
Машина A и B соединены по vpn
A - 192.168.2.1
B - 192.168.2.2

На машине B (192.168.2.2) в таблице маршрутизации есть запись:

Destination     Gateway         Genmask        Iface
192.168.2.0     0.0.0.0         255.255.255.0   tap0
10.71.0.0       192.168.2.1     255.255.192.0   tap0
Остальные записи очевидны и просто отвечают за посылку пакетов в интернет.

Машина A также имеет записи

Destination     Gateway         Genmask          Iface
10.71.192.0     10.71.192.1      255.255.192.0   eth0
192.168.2.0     0.0.0.0         255.255.255.0   tap0
Остальные записи не важны так как это просто записи для днс сервера и записи для ppp0 интерфейса.

Мне нужно чтобы машина B имела доступ к сети машины A, а именно к сети 10.71.192.0/18
Как я пытался это сделать я указал в первом посте.

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

добавил, в итоге получилось:

iptables -t filter -A FORWARD -i tap+ -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 10.71.192.0/18 -j MASQUERADE
iptables -t filter -A FORWARD -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -d 192.168.2.0/24 -s 10.71.192.0/18 -j MASQUERADE
Все равно пинг с машины B на сеть 10.71.192.0/18 не проходит.

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

Вы мне лучше скажите, все что я уже сделал достаточно для связи двух сетей ?

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

А так не получится:

iptables -t filter -A FORWARD -s 192.168.2.0/24 -j ACCEPT
iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 10.71.192.0/18 -j MASQUERADE

Kuzz ★★★
()
Ответ на: комментарий от Kuzz
iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

Это правило стоит конечно (: . А это

iptables -t filter -A FORWARD -s 192.168.2.0/24 -j ACCEPT

По сути тоже самое что:

iptables -t filter -A FORWARD -i tap+ -j ACCEPT
Да я понял что мое последние правило:
iptables -t nat -A POSTROUTING -d 192.168.2.0/24 -s 10.71.192.0/18 -j MASQUERADE
было тупым )).

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

Извините, я с vpn сталкиваюсь впервые.
Я просто думал что получится сделать, так как будто комп A просто имеет еще одну локальную сеть, и по ней соединен с компом B. И надо будет просто прописать маршруты, для того чтобы связать эту виртуальную локальную сеть с физической на компе А.

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

Kuzz А могло это зависеть от расположения правил ?
Дело в том что я многое че делал, и в итоге с компа B пошел пинг в сеть 10.71.192.0/18.
Вроде бы пинговать начало, после того когда я правило

iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Расположил ниже правила
iptables -t filter -A FORWARD -i tap+ -j ACCEPT

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

Зависеть могло, конечно. Но здесь непонятно почему правило «RELATED,ESTABLISHED» мешало.

будто комп A просто имеет еще одну локальную сеть, и по ней соединен с компом B.

Логически оно так и есть.

Я несколько раз сталкивался в неадекватной работой правил при указании интерфейса как tap+
Почему - не понятно.

Kuzz ★★★
()

Плохо понял. Очень много букафф. НО может помогут мои скромные соображения.

1. А может дело вовсе не в iptables. Я тоже недавно столкнулся с OpenVPN, но при настройке никаких правил дополнительных вообще не задавал, правда предварительно там был настроен вполне стандартный маскарад.

2. Насколяко я понимаю, интерфейс tap нужен для мостового соединения двух сетей, а для маршрутизируемого используется tun.

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