Таким образом , я создал достаточно основной tun
OpenVPN сервер, и у меня возникают проблемы при получении его так , что сервер может взаимодействовать со всеми подключенными клиентами.
В настоящее время у меня есть два набора клиентов, некоторые из которых не используют VPN для подключения к Интернету (просто для общения с другими клиентами), а некоторые используют redirect-gateway
для отправки всего своего трафика через VPN.
Когда я его настрою, все подключенные клиенты смогут общаться с сервером и с другими клиентами. Однако с сервера я могу связаться (например, с помощью ping) только с теми клиентами, которые используют redirect-gateway
для отправки всего своего трафика через VPN. Клиенты, не использующие эту конфигурацию, могут пропинговать сервер, но сервер не может пропинговать (они не отвечают на него, и время ожидания истекло).
Как настроить маршрутизацию так, чтобы сервер мог по-прежнему связываться с клиентами, даже если они не используют VPN в качестве шлюза по умолчанию?
Вот соответствующая конфигурация сервера:
port 1194
proto udp
dev tun
topology subnet
push "topology subnet"
server 10.7.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-config-dir /etc/openvpn/ccd
client-to-client
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
explicit-exit-notify 1
В каталоге конфигурации клиента на сервере у каждого клиента есть такой файл (просто чтобы дать каждому статический IP-адрес):
ifconfig-push 10.7.0.10 255.255.255.0
Соответствующие биты конфигурации локального клиента:
client
dev tun
proto udp
remote {server's public ip} 1194
float
keepalive 15 60
ns-cert-type server
key-direction 1
tun-mtu 1500
cipher AES-256-CBC
keysize 256
comp-lzo yes
nobind
Клиенты, использующие VPN для доступа в Интернет, добавляют в свою конфигурацию redirect-gateway def1 bypass-dhcp
.
Я использую ufw
для брандмауэра моего сервера - вот соответствующий конфиг (в /etc/ufw/before.rules):
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.7.0.0/8 -j SNAT --to-source {server's public ip}
Поскольку это работает на VPS OpenVZ, я не могу использовать MASQUERADE
, но вышеприведенное, кажется, работает так же хорошо.
Есть идеи, как правильно это настроить? Заранее спасибо. Если это имеет значение, на сервере работает CentOS.