Как ограничить доступ одного клиента OVPN к другим, так чтобы он пинговал только сервер OPVN?
Добрый день, такой вопрос, есть OVPN сервер и ряд OVPN клиентов, все они могу общаться между собой и сервером (client-to-client присутствует в конфиге сервера), необходимо сделать так чтобы один из клиентов мог общаться только с сервером, а других клиентов не видел.
Конфиг сервера:
port 1194
proto udp6
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
client-to-client
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"
#push "redirect-gateway def1 bypass-dhcp"
#server-ipv6 fd42:42:42:42::/112
#tun-ipv6
#push tun-ipv6
#push "route-ipv6 2000::/3"
#push "redirect-gateway ipv6"
compress lz4-v2
dh dh.pem
tls-auth tls-auth.key 0
crl-verify crl.pem
ca ca.crt
cert server_OwkGDv89X2y7ztM2.crt
key server_OwkGDv89X2y7ztM2.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
route 10.8.1.0 255.255.255.0
status /var/log/openvpn/status.log
verb 3
Стандартный конфиг клиента:
client
proto udp
explicit-exit-notify
remote 109.236.108.172 13920
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_OwkGDv89X2y7ztM2 name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
#ignore-unknown-option block-outside-dns
#setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
compress lz4-v2
Пробовал задавать через iptables маршруты, чтобы клиент с таким то ip мог общаться только с сервером, не получилось.
Может я чего то не понимаю, но зачем мне трафик то запрещать? Мне нужно, чтобы все клиенты друг друга видели, а лишь один никого не видел, видел только сервер.
CaeliG, выше всё верно сказано - взять статический адрес этого клиента и запретить ему ходить к остальным. Конкретное правило - в соседнем разделе сайта или у СhatGPT.
ky0, если вы имеете ввиду вот это правило sudo iptables -A INPUT -s -j DROP, то оно мне не подходит, теперь я не могу пинговать сервер. Может что то не так делаю?
Нужно:
1. Обеспечить выдачу клиенту статического адреса через конфигурирование сервера OpenVPN.
2. Настроить разрешающее правила прохождения трафика в iptables.
3. Ниже разрешающего правила закрыть доступ для ip адреса клиента к подсети openvpn в iptables.
1. Статический ip есть, через ccd реализовано ifconfig-push 10.8.0.129 255.255.255.0;
2. Разрешающее правило для чего? Для этого ip адреса, вот такое iptables -A INPUT -s 10.8.0.129 -j ACCEPT?
3. Такое правило iptables -A FORWARD -s 10.8.0.129 -d OPENVPN_SUBNET -j DROP?
Момент такой, мне нужно, чтобы клиент с этим ip просто не видел других клиентов, кроме сервера.
Alexey Dmitriev, Так они не будут так работать по моему, сначала мы разрешаем входящие пакеты для этого ip, а потом запрещаем этому же ip любое перенаправление этих пакетов внутри сети, сервер же тоже в сети находится, на него тоже не будут эти пакеты доходить или я что то не так думаю?
Alexey Dmitriev, Просто вот пример обычной команды на запрет доступа одного клиента к другому
sudo iptables -A FORWARD -s -d -j DROP
Даже она не работает, я как мог подключаться и пинговать, так и могу.
Опция client-to-client обеспечивается внутренним роутингом овпн сервера, до обработки iptables и маршрутизацией ядром этот трафик не доходит
Таким образом, надо отключить опцию client-to-client, обеспечить форвандинг трафика между клиентами через ядро (routing and firewal после tun0 на схеме т.е.), и уже тогда можно будет ограничить трафик отдельного клиента через iptables
Да, на сколько я понимаю, клиенты у вас в местную локалку не ходят, и форвардинг в системе с овпн сервером вообще не включен. В таком случае, когда включите форвардинг - не забудьте ограничить хождение трафика между клиентами ovpn и физическим интерфейсом