LINUX.ORG.RU
ФорумAdmin

Друзья , помогите с маршрутизацией внутри OpenVPN сети ((

 


1

1

вот пошла вторая неделя как не могу разобраться , может поможет кто найти решение ? Поиском здесь не нашел ( гугл тоже не помог ( Итак есть сервер , поднял на нем openVPN . к нему подключены несколько роутеров , каждый из них расшаривает свою сеть которая за ним 192.168.1.0; 192.168.2.0; 192.168.3.0; 192.168.4.0 и тд. с Этим все в порядке. Все работает . я к примеру client01 подключаюсь к шлюзу , и прекрасно вижу все эти сети и что за ними без проблем . Но стоит задача в другом : как подправить конфиг или файлы в /etc/openvpn/client/ чтобы client01 видел ТОЛЬКО сеть 192.168.1.0 client02 видел ТОЛЬКО сеть 192.168.2.0; client03 видел ТОЛЬКО сеть 192.168.3.0; и тд вот какой у меня конфиг сервера :

port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
auth SHA512
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS *.*.*.*"
push "dhcp-option DNS *.*.*.*"
client-config-dir /etc/openvpn/client
keepalive 10 120
cipher AES-256-CBC
client-to-client
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
в мануале на скрипт есть описание этого случая,( https://openvpn.net/community-resources/how-to/#policy) но при добавлении новых правил в иптайбелс
iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 10.66.4.0/24 -j ACCEPT
они какбудто не работают, по крайней мере статистика нулевая(( Опускаются руки , хелп ((

На OpenVPN сервере разреши для IP адреса client01 прохождение пакетов только в сеть 192.168.1.0, для client01 - 192.168.2.0 и так далее.

На OpenVPN сервере настрой, что бы клиенты получали всегда один и тот же адрес из VPN сети.

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

ВООТ ! помоги , как осуществить первый пункт !?
На OpenVPN сервере разреши для IP адреса client01 прохождение пакетов только в сеть 192.168.1.0, для client01 - 192.168.2.0 и так далее
C помощью iptables ?

на сервере настроил, чтобы клиент получал один и тот же ип насколько я понял я верно разрешил : в файле /etc/openvpn/client/client1.0 сделал такое содержимое :

ifconfig-push 10.8.0.3 255.255.255.0

и закоментил строку # ifconfig-pool-persist ipp.txt в конфиге сервера.

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

C помощью iptables ?

Да.

iptables -P FORWARD DROP
iptables -A FORWARD -i $openvpn_iface -s 10.8.0.3 -d 192.168.1.0/24 -j ACCEPT

Для всех остальных клиентов должны быть такие же строки. $openvpn_iface - интерфейс Вашего openvpn-туннеля на сервере. Ну или обратный вариант (я бы так делать не стал):

iptables -A FORWARD -i $openvpn_iface -s 10.8.0.3 ! -d 192.168.1.0/24 -j DROP

Политика Forward остается accept.

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

спасибо , сейчас попробую . а ничего что в мануале интерфейс тунеля зовется tun0 ? или как я его назову , так и будет ?

iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 10.66.4.0/24 -j ACCEPT 
Еще очень важный вопрос , я вот настраиваю на сервере в клиентской директории /etc/openvpn/client/ жесткую выдачу клиенту ип адреса ( о чем говорили в начале ) А клиент никак не может получить другой ип адрес ? Допустим сделать пуш в выданном мной ключе с другим ип адресом ? и сервер выдаст другой ИП.

ruchechnik
() автор топика

Поиском здесь не нашел

Плохо искали. Я отвечал здесь на подобный вопрос хз сколько времени назад.

Вынести client-to-client
Добавить push "route 10.8.0.0 255.255.255.0"
Далее рулить iptables.

НО: Вы задали правильный вопрос

А клиент никак не может получить другой ип адрес ?

В вашем варианте топологии сабнет может. Только не «получить» а самостоятельно поменять. В этом случае если предполагается что юзер сам что-то поменяет вся эта «защита» летит к люлям. Так что в зависимости от того кто клиенты, или дэфолтный net30, будет робить у всех, или p2p.

anc ★★★★★
()

И до кучи

каждый из них расшаривает свою сеть которая за ним 192.168.1.0; 192.168.2.0; 192.168.3.0; 192.168.4.0 и тд.

Вы этот момент чем реализовывали?

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

Спасибо , реальная дыра могла была быть (( все клиенты хоть и свои , но неприятно, если ктото залез бы ко мне в сеть

Вы этот момент чем реализовывали?

Обычными роутерами кинетик, они как клиенты прописаны на сервере /etc/openvpn/client/router1 с содержимым

ifconfig-push 10.8.1.1 255.255.255.0 # получаемый роутером OVPN ip адрес
iroute 192.168.1.0 255.255.255.0# транслируемая сеть  за роутером

значит топологию меняю на

topology net30
и получаю такой конфиг
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
auth SHA512
#topology subnet
topology net30
server 10.8.0.0 255.255.255.0
# ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS x.x.x.x"
push "dhcp-option DNS x.x.x.x"
route 10.8.1.0 255.255.255.0#ип адреса роутеров,расшаривающие сети
route 10.8.2.0 255.255.255.0
client-config-dir /etc/openvpn/client
keepalive 10 120
cipher AES-256-CBC
#client-to-client
push "route 10.8.0.0 255.255.255.0"
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
и должно все робить?

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

Обычными роутерами кинетик, они как клиенты прописаны на сервере /etc/openvpn/client/router1 с содержимым

Я поэтому и спросил, в route я не увидел этих сетей.

topology net30
ifconfig-push 10.8.1.1 255.255.255.0

тут тоже поменять придется. Но вы сами привели ссылку на доки ovpn, так что чую разберетесь какие адреса прописать. :)

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

не робит( вообще пакеты перестали ходить ( посмотри плиз ((

Вот конфиг сервера

port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
auth SHA512
#topology subnet
topology net30
server 10.8.0.0 255.255.255.0
# ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS x.x.x.x"
push "dhcp-option DNS x.x.x.x"
route 10.8.1.0 255.255.255.0#ип адреса роутеров,расшаривающие сети
route 10.8.2.0 255.255.255.0
client-config-dir /etc/openvpn/client
keepalive 10 120
cipher AES-256-CBC
#client-to-client
push "route 10.8.0.0 255.255.255.0"
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

вот кофиг первого роуетра с 192.168.1.0 за ним

topology net30
ifconfig-push 10.8.1.1 255.255.255.0
iroute 192.168.1.0 255.255.255.0

вот конфиг client1

topology net30
ifconfig-push 10.8.1.2 255.255.255.0

вот логи, кто такой ip получил:

ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.1.1,keenetic1,33.171.7.11:56393,Sat Nov 10 09:06:08 2018
10.8.1.2,client1,85.111.239.243:63889,Sat Nov 10 09:06:10 2018
192.168.1.0/24,keenetic1,33.171.7.11:56393,Sat Nov 10 08:52:56 2018
GLOBAL STATS
Max bcast/mcast queue length,3
END

вот правило в iptables

iptables -P FORWARD DROP
iptables -A FORWARD -i tun0 -s 10.8.1.1 -d 192.168.1.0/24 -j ACCEPT

что имеем : пока сеть 10.8.1.1 не пингуется и 192.168.1.0 тоже с client1 недоступна

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

topology net30

В ccd не в тему, оно просто не к чему

ifconfig-push 10.8.1.1 255.255.255.0

Не верно, я выше написал, но видимо не разобрались или я не так описал :)
Вот доки https://community.openvpn.net/openvpn/wiki/Topology
Смотрим на net30 и пример ifconfig-push 10.8.0.10 10.8.0.9 net30 выделяет по одной /30 сети на клиента, нулевая на сервере.
У вас по клиентам будет.
ifconfig-push 10.8.1.6 10.8.1.5
ifconfig-push 10.8.1.10 10.8.1.9
ifconfig-push 10.8.1.14 10.8.1.13
ifconfig-push 10.8.1.18 10.8.1.17
и т.д.

iptables -A FORWARD -i tun0 -s 10.8.1.1 -d 192.168.1.0/24 -j ACCEPT

Обратное правило тоже нужно
iptables -A FORWARD -i tun0 -d 10.8.1.1 -s 192.168.1.0/24 -j ACCEPT

ЗЫ И всетаки меня смущает роутинг, покажите с сервера выхлоп ip r s

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

ЗЫ
iptables -P FORWARD DROP
iptables -A FORWARD -i tun0 -s 10.8.1.1 -d 192.168.1.0/24 -j ACCEPT
Надеюсь это не единственные правила.

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

ЗЫ И всетаки меня смущает роутинг, покажите с сервера выхлоп

пока ничего не менял , вот ответ :

default via *.*.*.* dev eth0 onlink 
10.8.0.0/24 via 10.8.0.2 dev tun0 
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1 
10.8.1.0/24 via 10.8.0.2 dev tun0 
10.8.2.0/24 via 10.8.0.2 dev tun0 
*.*.*.*/24 dev eth0 proto kernel scope link src *.*.*.*

клиенту router получается я делаю в ccd :

 
ifconfig-push 10.8.1.6 10.8.1.5
iroute 192.168.1.0 255.255.255.0

соотвественно и правило в ipables будет другим - вот таким :

iptables -P FORWARD DROP
iptables -A FORWARD -i tun0 -s 10.8.1.0/24 -d 192.168.1.0/24 -j ACCEPT
ptables -A FORWARD -i tun0 -d 10.8.1.0/24 -s 192.168.1.0/24 -j ACCEPT
а у клиента 1 будет такой конфиг в ccd:
ifconfig-push 10.8.1.10 10.8.1.9
Все правильно :) ?

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

1. Добавить в основной конфиг сервера строчки
route 192.168.1.0 255.255.255.0 ну или какая у вас там маска подумал что /24
И так по каждой сетке
2. По поводу iptables, я задал вопрос: это все правила в FORWARD? Или есть еще какие-то?
Поясню, у вас в конфиге сервера прописано push "redirect-gateway def1 bypass-dhcp" т.е. после поднятия тунеля весь трафик с клиента идет через ваш роутер. Но в инет он при таких правилах iptables уже не попадет.

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

как сделал , не робит (( вот логи кто что получил:

10.8.1.6,keenetic1,33.175.7.191:49544,Sat Nov 10 17:52:48 2018
10.8.1.10,client1,83.220.237.217:12398,Sat Nov 10 17:56:52 2018
192.168.1.0/24,keenetic1,33.175.7.191:49544,Sat Nov 10 17:52:48 2018
вот что у меня в iptables :
Chain INPUT (policy ACCEPT 1078 packets, 124K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1856  152K f2b-ssh    tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
 1414  124K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
12745 1444K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1194

Chain FORWARD (policy ACCEPT 2317 packets, 169K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       10.8.0.0/24          0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
 1087 90756 ACCEPT     all  --  tun0   *       10.8.1.0/24          192.168.1.0/24      
    0     0 ACCEPT     all  --  tun0   *       192.168.1.0/24       10.8.1.0/24   
    

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

Отлично, давайте пока остановимся на тех правилах iptables которые у вас сейчас запущены, т.е. у вас полиси ACCEPT разрешено все. Сначала решим вопрос с ovpn, а только потом с iptables. Выше я написал про добавление строчек route... сделайте это

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

Добавил

route 192.168.1.0 255.255.255.0

в конфиг , и перезапустил сервис

Поясню, у вас в конфиге сервера прописано push «redirect-gateway def1 bypass-dhcp» т.е. после поднятия тунеля весь трафик с клиента идет через ваш роутер. Но в инет он при таких правилах iptables уже не попадет.

мне бы конечно в идеале , чтобы инет был у клиента свой , а вся локалка с роутера , но пока хоть как бы заработало )

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

Начните с сервера, а то возможно роутер просто блокирует, что вполне вероятно.

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

Аааа стоп. Не внимательно посмотрел.
server 10.8.0.0 255.255.255.0
и
ifconfig-push 10.8.1.
Сетки разные 0 и 1, поправьте.
хотя вроде роли играть не должно, но начнем с «феншуя».

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от ruchechnik

Нарисуй схему получаемой сети.

Т.е. в центре схемы VPN сервер, напиши его IP адрес, далее нарисуй на схеме клиентов, их IP адреса из VPN сети.

Если я правильно понял, то за клиентами есть некоторые сети.

Нарисуй так же и эти сети за клиентами, какой у них адрес.

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

сейчас нарисую.

server 10.8.0.0 255.255.255.0 и ifconfig-push 10.8.1. Сетки разные 0 и 1, поправьте.

вот с этим не понял , что на что поменять ((?

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

вот с этим не понял , что на что поменять ((?

Привести к одному знаменателю все конфиги. Или 10.8.0.X или 10.8.1.X

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

Убираешь с конфига VPN сервера вот эту строку:

push "redirect-gateway def1 bypass-dhcp"

Далее можешь пойти двумя вариантами:
- прописать в конфиге строки добавления маршрутов до сетей

push                            "route 192.168.1.0 255.255.255.0"
push                            "route 192.168.2.0 255.255.255.0"
push                            "route 192.168.3.0 255.255.255.0"
...
- либо в директории «client-config-dir /etc/openvpn/client» в конфигурационном файле соответствующего клиента прописываешь строки
client1
push                            "route 192.168.1.0 255.255.255.0"
client2
push                            "route 192.168.1.0 255.255.255.0"
client3
push                            "route 192.168.3.0 255.255.255.0"
и так далее.

В iptables на VPN сервере должен быть примерно такой конфиг:

*filter
:INPUT ACCEPT [12:1056]
:FORWARD ACCEPT [39:11322]
:OUTPUT ACCEPT [10:1056]
-A FORWARD -s IP_CLIENT1/32 -d 192.168.1.0/24 -j ACCEPT
-A FORWARD -s IP_CLIENT2/32 -d 192.168.2.0/24 -j ACCEPT
-A FORWARD -s IP_CLIENT3/32 -d 192.168.3.0/24 -j ACCEPT
-A FORWARD -d IP_CLIENT1/32 -s 192.168.1.0/24 -j ACCEPT
-A FORWARD -d IP_CLIENT2/32 -s 192.168.2.0/24 -j ACCEPT
-A FORWARD -d IP_CLIENT3/32 -s 192.168.3.0/24 -j ACCEPT

-A FORWARD -s IP_CLIENT1/32 -j DROP
-A FORWARD -s IP_CLIENT2/32 -j DROP
-A FORWARD -s IP_CLIENT3/32 -j DROP

COMMIT

*nat
:PREROUTING ACCEPT [20084:2161277]
:INPUT ACCEPT [531:102340]
:OUTPUT ACCEPT [344:40581]
:POSTROUTING ACCEPT [288:28831]
COMMIT

anonymous
()
Ответ на: комментарий от ruchechnik

В целом вся ваша задача без извратов решается достаточно легко.
Клиентам в ccd пушим роут для сетей других клиентов
Клиентам в ccd прописываем iroute для случая если за ними есть сеть.
В основном конфиге прописываем роут до сетей всех клиентов(это про случай когда сеть за клиентом как у вас 192.168.x), сервер должен знать куда роутить пакеты до той или иной сети.
В основном конфиге пушим роут до сети ovpn
Вроде все, надеюсь ничего не забыл.

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

тоесть все роутеры и клиенты должны быть в одной сети ? когда я делал по этому мануалу , мне только так и удалось разделить клиентов по рутерам , отделив их в свои подсети, чтобы не лезли не в свой роутер

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

Ну так ты бы сказал, что у тебя и роутеры до сетей 192.168.1.0, 192.168.2.0, 192.168.3.0 и клиенты, client1, clietn2, clietn3 и т.д. - все подключаюся по VPN к серверу.

А не то что у тебя за VPN сервером просто сеть в которую ты будешь пускать клиентов.

В таком случае на VPN сервере в начале пропиши маршруты до сетей.

Что шлюзом для сети 192.168.1.0 является 10.8.1.6.
Для сети 192.168.2.0 - 10.8.2.6.
Для сети 192.168.3.0 - 10.8.3.6.

А далее делай как в моём предыдущем сообщении.

anonymous
()
Ответ на: комментарий от ruchechnik

Да, одна подсеть, а вот разрулить ограничения как раз можно с помощью iptables. Что в принципе комфортно.

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

Что шлюзом для сети 192.168.1.0 является 10.8.1.6.

так я и прописал , только не конфиге сервера , а в клиентском файле в директории на сервере

ifconfig-push 10.8.1.6 10.8.1.5
iroute 192.168.1.0 255.255.255.0

я просто не знаю как по другому прописать .. подскажи

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

так я и прописал , только не конфиге сервера , а в клиентском файле в директории на сервере

Не надо прописывать в конфиге клиента.

Тебе надо что бы с VPN сервера были доступны сети 192.168.1.0, 192.168.2.0, 192.168.3.0 и так далее.

А далее действуй как я описал выше.

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

спасибо огромное , сейчас попробую ) в долгу не останусь точно! Слишком долго я решал эту задачу (

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

Вы что сегодня курите?
Выше я описал добавить роуты на эти сети в основной конфиг. Тем самым на tun0 будет зароученно. Именно на интерфейс, а дальше разбирается сам ovpn на основе iroute клиентов.

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

Я не вам а анону. Про вашу задачу описал выше, она более чем стандартная. Ходим по кругу не понятно почему.

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

client-to-client же.

Хм, я понял задачу несколько по-другому. Есть сервер, за которым прячутся внутренние сети 192.168.x.0/24. И есть удаленные клиенты, подключающиеся к серверу через OpenVPN-туннель, которым нужен доступ во внутренние сети. Задачи видеть другие удаленные клиенты вроде не было? По идее, должно работать...

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

В конечном итоге без разницы как маршруты до локальных сетей 192.168.1.0, 192.168.2.0, 192.168.3.0 будут прописаны на VPN сервере.

Руками или через iroute, но да, прописать iroute в конфигурационном файле клиентов 10.8.1.6, 10.8.2.6, 10.8.3.6 логичнее и правильнее.

А далее можно следовать по написанному мной выше.

anonymous
()
Ответ на: комментарий от anc

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

anonymous
()
Ответ на: комментарий от anc

Я вообще потерял нить обсуждения :(. Зачем было в iptables лезть, если еще с маршрутизацией не разобрались? Или разобрались? Сам vpn-сервер видит сети, спрятанные за роутерами kinetics?

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

Прекрасно добавлю:

ip r a 192.168.1.0/24 via 10.8.1.6
ip r a 192.168.2.0/24 via 10.8.2.6
ip r a 192.168.3.0/24 via 10.8.3.6
Только маршруты нужно прописывать после старта OpenVPN сервера.

И это будет работать даже в случае если не подключены эти узлы.

Только этот подход неправильный. Логичнее прописать iroute, что бы клиент сам при подключении к серверу сообщал какая локальная сеть за ним находится и на сервере добавлялся соответствующий маршрут.

anonymous
()
Ответ на: комментарий от Serge10

Я вообще потерял нить обсуждения

Краткое содержание предыдущих серий:
- ТС хочет ограничить доступ между клиентами подключающимися к одному opvn серверу.
- При варианте client-to-client iptables не сработает, все будет проходить внутри ovpn
- У ТС в топике subnet. Если даже убрать client-to-client при этой топологии клиент может сам поменять ip, т.е. идея с выделением статического ip клиенту идет лесом.
Вот как-то так.
- А сейчас «мы» пытаемся настроить самый простой вариант. net30 и соединение сетей, почему у ТС не получаеться, не понятно, проще некуда, оно из каробки робит.

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

топологию какую поменяли , такая и есть интерфейс tun

port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
auth SHA512
#topology subnet
topology net30
server 10.8.0.0 255.255.255.0
# ifconfig-pool-persist ipp.txt
# push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 62.149.128.4"
push "dhcp-option DNS 62.149.132.4"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0"
#route 10.8.1.0 255.255.255.0
#route 10.8.2.0 255.255.255.0
#route 192.168.1.0 255.255.255.0
client-config-dir /etc/openvpn/client
keepalive 10 120
cipher AES-256-CBC
#client-to-client
push "route 10.8.0.0 255.255.255.0"
user nobody
group nogroup

конфиг правильно поправил ?

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

Опять, ответ не вам, а анону. Смотрите кому отвечаем :)

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