- Вопрос или проблема
- Ответ или решение
- Проблема с OpenVPN: Клиент подключен, но нет перенаправления трафика
- 1. Проверка конфигурации сервера OpenVPN
- 2. Проверка конфигурации клиента
- 3. Настройки маршрутизации и перенаправление трафика
- 4. Правильная настройка Firewall
- 5. Проверка подключения клиента
- 6. Проверка логов
- 7. Проверка сетевого подключения
- Заключение
Вопрос или проблема
Сервер Openvpn установлен на CentOS 9 на удаленном VPS.
Режим tun настроен.
Сервер OVPN был установлен через https://github.com/angristan/openvpn-install
Введены команды для брандмауэра:
semanage port -a -t openvpn_port_t -p tcp 11994;
semanage port -a -t openvpn_port_t -p udp 11994
firewall-cmd --zone=public --add-port=11994/tcp --permanent;
firewall-cmd --zone=public --add-port=11994/udp --permanent;
firewall-cmd --zone=public --add-service openvpn;
firewall-cmd --zone=public --add-service openvpn --permanent;
firewall-cmd --reload;
firewall-cmd --add-masquerade;
firewall-cmd --add-masquerade --permanent;
firewall-cmd --query-masquerade;
VAR=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE;
firewall-cmd --reload;
Пакет networkmanager-openvpn является клиентом OVPN на моем ноутбуке.
Файл user.ovpn был загружен и вставлен в клиент OVPN.
Я подключился к серверу, но никаких перенаправлений трафика не произошло.
Это журналы клиента OVPN без какой-либо криминальной информации:
5:54 Note: Kernel support for ovpn-dco missing, disabling data channel offload.
5:54 OpenVPN 2.6.12 [git:makepkg/038a94bae57a446c+] x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO] built on Jul 18 2024
5:54 library versions: OpenSSL 3.2.0 23 Nov 2023, LZO 2.10
5:54 DCO version: N/A
5:54 TCP/UDP: Preserving recently used remote address: [AF_INET]REMOTE_MACHINE_IP:11994
5:54 Socket Buffers: R=[212992->212992] S=[212992->212992]
5:54 UDPv4 link local: (not bound)
5:54 UDPv4 link remote: [AF_INET]REMOTE_MACHINE_IP:11994
5:54 TLS: Initial packet from [AF_INET]REMOTE_MACHINE_IP:11994, sid=4a8064ba 3cb81744
5:54 VERIFY OK: depth=1, CN=cn_qHIl2i2Rlyyfw4WD
5:54 VERIFY KU OK
5:54 Validating certificate extended key usage
5:54 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
5:54 VERIFY EKU OK
5:54 VERIFY X509NAME OK: CN=server_A7vEzNqMWKlJHLcR
5:54 VERIFY OK: depth=0, CN=server_A7vEzNqMWKlJHLcR
5:54 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 256 bits ECprime256v1, signature: ecdsa-with-SHA256, peer temporary key: 256 bits ECprime256v1
5:54 [server_A7vEzNqMWKlJHLcR] Peer Connection Initiated with [AF_INET]REMOTE_MACHINE_IP:11994
5:54 TLS: move_session: dest=TM_ACTIVE src=TM_INITIAL reinit_src=1
5:54 TLS: tls_multi_process: initial untrusted session promoted to trusted
5:54 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,redirect-gateway def1 bypass-dhcp,tun-ipv6,route-ipv6 2000::/3,redirect-gateway ipv6,tun-ipv6,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig-ipv6 fd42:42:42:42::2/112 fd42:42:42:42::1,ifconfig 10.8.0.2 255.255.255.0,peer-id 0,cipher AES-128-GCM'
5:54 WARNING: You have specified redirect-gateway and redirect-private at the same time (or the same option multiple times). This is not well supported and may lead to unexpected results
5:54 OPTIONS IMPORT: --ifconfig/up options modified
5:54 OPTIONS IMPORT: route options modified
5:54 OPTIONS IMPORT: route-related options modified
5:54 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
5:54 net_route_v4_best_gw query: dst 0.0.0.0
5:54 net_route_v4_best_gw result: via 192.168.0.2 dev wlan0
5:54 ROUTE_GATEWAY 192.168.0.2/255.255.255.0 IFACE=wlan0 HWADDR=84:7b:57:67:69:0c
5:54 GDG6: remote_host_ipv6=n/a
5:54 net_route_v6_best_gw query: dst ::
5:54 sitnl_send: rtnl: generic error (-101): Network is unreachable
5:54 ROUTE6: default_gateway=UNDEF
5:54 TUN/TAP device tun0 opened
5:54 net_iface_mtu_set: mtu 1500 for tun0
5:54 net_iface_up: set tun0 up
5:54 net_addr_v4_add: 10.8.0.2/24 dev tun0
5:54 net_iface_mtu_set: mtu 1500 for tun0
5:54 net_iface_up: set tun0 up
5:54 net_addr_v6_add: fd42:42:42:42::2/112 dev tun0
5:54 net_route_v4_add: REMOTE_MACHINE_IP/32 via 192.168.0.2 dev [NULL] table 0 metric -1
5:54 net_route_v4_add: 0.0.0.0/1 via 10.8.0.1 dev [NULL] table 0 metric -1
5:54 net_route_v4_add: 128.0.0.0/1 via 10.8.0.1 dev [NULL] table 0 metric -1
5:54 add_route_ipv6(2000::/3 -> fd42:42:42:42::1 metric -1) dev tun0
5:54 net_route_v6_add: 2000::/3 via :: dev tun0 table 0 metric -1
5:54 add_route_ipv6(::/3 -> fd42:42:42:42::1 metric -1) dev tun0
5:54 net_route_v6_add: ::/3 via :: dev tun0 table 0 metric -1
5:54 add_route_ipv6(2000::/4 -> fd42:42:42:42::1 metric -1) dev tun0
5:54 net_route_v6_add: 2000::/4 via :: dev tun0 table 0 metric -1
5:54 add_route_ipv6(3000::/4 -> fd42:42:42:42::1 metric -1) dev tun0
5:54 net_route_v6_add: 3000::/4 via :: dev tun0 table 0 metric -1
5:54 add_route_ipv6(fc00::/7 -> fd42:42:42:42::1 metric -1) dev tun0
5:54 net_route_v6_add: fc00::/7 via :: dev tun0 table 0 metric -1
5:54 Initialization Sequence Completed
5:54 Data Channel: cipher 'AES-128-GCM', peer-id: 0
5:54 Timers: ping 10, ping-restart 120
5:54 Protocol options: explicit-exit-notify 1
5:56 event_wait : Interrupted system call (fd=-1,code=4)
Это журналы сервера OVPN на удаленном VPS с моим подключением и без какой-либо криминальной информации снова:
7:48 openvpn[55133]: user/MY_MACHINE_IP:54417 SIGUSR1[soft,ping-restart] received, client-instance restarting
7:48 openvpn[55133]: user/MY_MACHINE_IP:54417 [user] Inactivity timeout (--ping-restart), restarting
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 SENT CONTROL [user]: 'PUSH_REPLY,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,redirect-gateway def1 bypass-dhcp,tun-ipv6,rout>
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 Incoming Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 Outgoing Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 MULTI: primary virtual IPv6 for user/MY_MACHINE_IP:54417: fd42:42:42:42::2
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 MULTI: Learn: fd42:42:42:42::2 -> user/MY_MACHINE_IP:54417
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 MULTI: primary virtual IP for user/MY_MACHINE_IP:54417: 10.8.0.2
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 MULTI: Learn: 10.8.0.2 -> user/MY_MACHINE_IP:54417
3:48 openvpn[55133]: user/MY_MACHINE_IP:54417 MULTI_sva: pool returned IPv4=10.8.0.2, IPv6=fd42:42:42:42::2
3:48 openvpn[55133]: MY_MACHINE_IP:54417 [user] Peer Connection Initiated with [AF_INET6]::ffff:MY_MACHINE_IP:54417
3:48 openvpn[55133]: MY_MACHINE_IP:54417 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 256 bit EC, curve prime256v1, signature: ecdsa-with-SHA256
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_COMP_STUBv2=1
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_COMP_STUB=1
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_LZO_STUB=1
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_PROTO=990
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_CIPHERS=AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_NCP=2
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_MTU=1600
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_TCPNL=1
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_PLAT=linux
3:48 openvpn[55133]: MY_MACHINE_IP:54417 peer info: IV_VER=2.6.12
3:48 openvpn[55133]: MY_MACHINE_IP:54417 VERIFY OK: depth=0, CN=user
3:48 openvpn[55133]: MY_MACHINE_IP:54417 VERIFY OK: depth=1, CN=cn_qHIl2i2Rlyyfw4WD
3:48 openvpn[55133]: MY_MACHINE_IP:54417 TLS: Initial packet from [AF_INET6]::ffff:MY_MACHINE_IP:54417, sid=b652188d 79e81fe0
3:48 openvpn[55133]: MY_MACHINE_IP:54417 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
3:48 openvpn[55133]: MY_MACHINE_IP:54417 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
3:48 openvpn[55133]: MY_MACHINE_IP:54417 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
3:48 openvpn[55133]: MY_MACHINE_IP:54417 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2:59 openvpn[55133]: Initialization Sequence Completed
2:59 openvpn[55133]: IFCONFIG POOL LIST
2:59 openvpn[55133]: NOTE: IPv4 pool size is 253, IPv6 pool size is 65534. IPv4 pool size limits the number of clients that can be served from the pool
2:59 openvpn[55133]: IFCONFIG POOL IPv6: base=fd42:42:42:42::2 size=65534 netbits=112
2:59 openvpn[55133]: IFCONFIG POOL IPv4: base=10.8.0.2 size=253
2:59 openvpn[55133]: MULTI: multi_init called, r=256 v=256
2:59 openvpn[55133]: UID set to nobody
2:59 openvpn[55133]: GID set to nobody
2:59 openvpn[55133]: UDPv6 link remote: [AF_UNSPEC]
2:59 openvpn[55133]: UDPv6 link local (bound): [AF_INET6][undef]:11994
2:59 openvpn[55133]: setsockopt(IPV6_V6ONLY=0)
2:59 openvpn[55133]: Socket Buffers: R=[212992->212992] S=[212992->212992]
2:59 openvpn[55133]: net_addr_v6_add: fd42:42:42:42::1/112 dev tun0
2:59 openvpn[55133]: net_iface_up: set tun0 up
2:59 openvpn[55133]: net_iface_mtu_set: mtu 1500 for tun0
2:59 openvpn[55133]: net_addr_v4_add: 10.8.0.1/24 dev tun0
2:59 openvpn[55133]: net_iface_up: set tun0 up
2:59 openvpn[55133]: net_iface_mtu_set: mtu 1500 for tun0
2:59 openvpn[55133]: TUN/TAP device tun0 opened
2:59 openvpn[55133]: Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2:59 openvpn[55133]: Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2:59 openvpn[55133]: Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication
2:59 openvpn[55133]: Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key
2:59 openvpn[55133]: ECDH curve prime256v1 added
2:59 openvpn[55133]: CRL: loaded 1 CRLs from file crl.pem
2:59 systemd[1]: Started OpenVPN service for server.
Хорошо, согласен, у меня нет знаний. Но, пожалуйста, помогите мне. Я потратил 2 дня, и ничего не изменилось.
Я не знаю, что делать и где копать.
Возможно, проблема в iptables/nftables? Мне нужно настроить какое-то пересылку?
UPD
это правила iptables
sudo iptables -L -v -n | more
Chain INPUT (policy ACCEPT 33934 packets, 9787K bytes)
pkts bytes target prot opt in out source destination
43 12364 ACCEPT 17 -- ens192 * 0.0.0.0/0 0.0.0.0/0 udp dpt:11994
0 0 ACCEPT 0 -- tun0 * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
17 1088 ACCEPT 0 -- tun0 ens192 0.0.0.0/0 0.0.0.0/0
17 1847 ACCEPT 0 -- ens192 tun0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
это server.conf
port 11994
proto udp6
dev tun
user nobody
group nobody
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
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"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_A7vEzNqMWKlJHLcR.crt
key server_A7vEzNqMWKlJHLcR.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-....
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3
Ответ или решение
Проблема с OpenVPN: Клиент подключен, но нет перенаправления трафика
Описание проблемы
На сервере OpenVPN, установленном на CentOS 9 на удаленном VPS, клиент успешно подключается, однако трафик не перенаправляется. Это может быть связано с несколькими проблемами — от конфигурации сетевого интерфейса до настроек firewall.
Шаги по устранению неисправностей
1. Проверка конфигурации сервера OpenVPN
Ваш файл конфигурации сервера (server.conf) выглядит в целом корректно. Однако обратите внимание на следующие моменты:
- Убедитесь, что директива
proto
соответствует протоколу, который вы используете на клиенте. В вашей конфигурации указаноproto udp6
, что означает, что сервер слушает только на IPv6. Если ваш клиент использует IPv4, измените наproto udp
илиproto udp4
.
2. Проверка конфигурации клиента
Убедитесь, что в файле .ovpn вашего клиента указано следующее:
proto udp
remote REMOTE_MACHINE_IP 11994
Также удостоверьтесь, что указанные IP-адреса DNS правильно настроены.
3. Настройки маршрутизации и перенаправление трафика
Для того чтобы трафик успешно проходил через сервер OpenVPN, необходимо выполнить следующие действия:
-
Включите IP маршрутизацию на сервере:
Добавьте или измените следующую строку в файле
/etc/sysctl.conf
:net.ipv4.ip_forward = 1
Затем примените изменения:
sudo sysctl -p
-
Настройки iptables:
Убедитесь, что iptables настроены правильно для маршрутизации трафика. На основе предоставленных вами правил iptables, убедитесь, что у вас есть следующее правило для NAT:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens192 -j MASQUERADE
Если вы используете unit-файлы с nftables, аналогичные правила могут выглядеть иначе, и вам следует удостовериться в их корректной реализации.
4. Правильная настройка Firewall
Ваши команды firewall-cmd также выглядят корректно, но вот что можно проверить:
-
Убедитесь, что правила активны:
firewall-cmd --list-all
-
Проверьте, включает ли активная зона правила для сервиса OpenVPN.
5. Проверка подключения клиента
Во время подключения клиента посмотрите, что происходит в логах как клиента, так и сервера. Убедитесь, что клиент не игнорирует Push-сообщения, содержащие команды для перенаправления трафика:
PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,redirect-gateway def1 bypass-dhcp, ...
Обратите внимание на предупреждение:
WARNING: You have specified redirect-gateway and redirect-private at the same time
Это может вызвать конфликты. Убедитесь, что вы не используете параметры, которые могут конфликтовать друг с другом.
6. Проверка логов
Логи на сервере:
- Убедитесь, что сервер OpenVPN запущен без ошибок. Все сообщения об ошибках или предупреждениях могут дать подсказки о причине проблемы.
Логи клиента:
- Логи клиента могут содержать полезную информацию. Внимательно изучите их на предмет ошибок, связанных с маршрутизацией.
7. Проверка сетевого подключения
Проверьте, работает ли:
- Убедитесь, что ваш клиент после подключения может «пинговать» IP-адреса, находящиеся за VPN (например, сокурсора 10.8.0.1 – IP-сервер VPN).
- Передайте интернет-трафик через VPN.
Заключение
Согласно вашему описанию, проблема может быть вызвана многими факторами. Проверьте вышеперечисленное пошагово. Если проблема все еще остается, возможно, потребуется более глубокий анализ конфигурации оборудования и сетевого окружения.