Все пользователи могут подключаться к хосту, на котором работает OpenVPN, но некоторые пользователи могут переходить на другие хосты в локальной сети. Например, фу пользователь может связаться с хостом 10.2.0.1/32
(где работает OpenVPN) и хосты в 10.0.0.0/24
но бар пользователь может связаться только с хостом 10.2.0.1/32
.
Для обоих пользователей таблица маршрутов одинакова
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 302 0 0 wlan0
10.1.0.0 10.2.0.5 255.255.255.128 UG 0 0 0 tun0
10.2.0.1 10.2.0.5 255.255.255.255 UGH 0 0 0 tun0
10.2.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
Для генерации клиентского ключа я запускаю
cd /usr/share/easy-rsa/2.0
source vars
./build-key --batch foo
В /etc/openvpn/server.conf
файл имеет
; server
mode server
port 1194
proto udp
dev tun
keepalive 10 120
; networking
server 10.2.0.0 255.255.255.0
ifconfig 10.2.0.1 255.255.255.0
push "route 10.1.0.0 255.255.255.128"
ifconfig-pool-persist ipp.txt
Сервер представляет собой CentOS 7 (x86_64) под управлением OpenVPN 2.3.11 и Easy RSA 2.2.2.
Моя проблема: проблема заключалась в правиле пост-маршрутизации в IPTables, это было
-A POSTROUTING -s 10.2.0.0/27 -o eno1 -j MASQUERADE
И должно быть
-A POSTROUTING -s 10.2.0.0/24 -o eno1 -j MASQUERADE