Я пытался настроить сервер OpenVPN на FreeNAS (я знаю, что это не самый простой вариант) и столкнулся с загадочной ошибкой. Кажется, что сервер зависает после сообщения «Последовательность инициализации завершена» всякий раз, когда я пытаюсь его запустить. Он достигнет этой точки и просто будет сидеть там, пока мне не придется прервать выполнение с помощью ctrl + c.
Мой файл openvpn.conf выглядит следующим образом:
#
# Sample OpenVPN configuration file for
# office using SSL/TLS mode and RSA certificates/keys.
#
# '#' or ';' may be used to delimit comments.
# Use a dynamic tun device.
# For Linux 2.2 or non-Linux OSes,
# you may want to use an explicit
# unit number such as "tun1".
# OpenVPN also supports virtual
# ethernet "tap" devices.
dev tap
;dev tun
# 192.168.1.102 id this server's actual IP address.
local 192.168.1.102
# 10.8.0.1 is this server's virtual IP address.
; ifconfig 192.168.1.102 255.255.255.0
server 10.8.0.0 255.255.255.0
# In SSL/TLS key exchange, this machine will
# assume server role and others
# will assume client role.
tls-server
# Diffie-Hellman Parameters (tls-server only)
dh /mnt/ZFS1/bin/openvpn/keys/dh1024.pem
# Certificate Authority file
ca /mnt/ZFS1/bin/openvpn/keys/ca.crt
# Server certificate/public key
cert /mnt/ZFS1/bin/openvpn/keys/server.crt
# Server private key
key /mnt/ZFS1/bin/openvpn/keys/server.key
# TCP or UDP server?
;proto tcp
proto udp
# OpenVPN 2.0 uses UDP port 1194 by default
# (official port assignment by iana.org 11/04).
# OpenVPN 1.x uses UDP port 5000 by default.
# Each OpenVPN tunnel must use
# a different port number.
# lport or rport can be used
# to denote different ports
# for local and remote.
port 1194
# Downgrade UID and GID to
# "nobody" after initialization
# for extra security.
user nobody
group nobody
# Maintain a record of client <-> virtual IP address
# associations in this file. If OpenVPN goes down or
# is restarted, reconnecting clients can be assigned
# the same virtual IP address from the pool that was
# previously assigned.
ifconfig-pool-persist ipp.txt
# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120
# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun
# Output a short status file showing
# current connections, truncated
# and rewritten every minute.
status openvpn-status.log
# Verbosity level.
# 0 -- quiet except for fatal errors.
# 1 -- mostly quiet, but display non-fatal network errors.
# 3 -- medium output, good for normal operation.
# 9 -- verbose, good for troubleshooting
verb 3
Все остальное работает без проблем. Любые идеи?
-Заранее спасибо.
Итак, комментарий meanasspenguin дал мне идею, и я смог ее понять. Программа на самом деле не зависает, она запущена и просто еще не вышла. Чтобы исправить это, просто запустите приложение в режиме демона. Я закончил тем, что просто написал простой сценарий оболочки, поэтому в следующий раз мне не придется его вспоминать.
start_openvpn.sh:
#!/bin/bash
ldconfig -Rm /mnt/ZFS1/bin/openvpn/lib
ldconfig -Rm /mnt/ZFS1/bin/openssl/lib
/mnt/ZFS1/bin/openvpn/sbin/openvpn --config /mnt/ZFS1/bin/openvpn/openvpn.conf --daemon
Примечание. Я загружаю библиотеки каждый раз, когда запускаю FreeNAS Embedded, которая находится на RAM-диске. Каждый сброс приведет к стиранию любых изменений конфигурации, которых нет на смонтированном диске. Я просто установил этот сценарий для запуска при запуске, и все кажется золотым.