У меня есть сервер Ubuntu 14.04, который служит маршрутизатором NAT. Маршрутизация выполняется с помощью Shorewall, в основном в соответствии с этот учебник. В локальной сети есть подсеть 10.0.0.0/24
На этой машине я также хочу запустить сервер OpenVPN, который прослушивает порт 1194 (udp). Клиенты, подключающиеся к этому VPN (из Интернета), должны оказаться в 10.34.56.0/24
подсеть. Хосты в подсети VPN должны иметь возможность подключаться к хостам в подсети LAN с помощью соединений UDP и TCP. Кроме того, узлы в подсети VPN должны иметь доступ к Интернету через мой сервер (замаскированный).
У меня вопрос: Как мне настроить Shorewall, чтобы это произошло?
а) Клиенты, подключающиеся к VPN, должны получить ответ от сервера OpenVPN.
б) Хосты в подсети VPN должны иметь доступ к Интернету.
Мой /etc/shorewall/rules
содержит строку, которая открывает порт сервера OpenVPN для входящих VPN-подключений
#ACTION SOURCE DEST PROTO DEST SOURCE
# PORT PORT(S)
# listen for VPN on net
ACCEPT net $FW udp 1194
Я пробовал использовать /etc/shorewall/tunnels
файл, как эта страница предлагает, но безрезультатно. Я также пробовал переводить /etc/shorewall/tunnels
файл в /etc/shorewall/rules
, согласно эта страница, но и это было неудачно. Все, что я получаю, - это тайм-аут при настройке соединения.
Еще несколько моих конфигурационных файлов Shorewall:
Мой /etc/shorewall/interfaces
#ZONE INTERFACE BROADCAST OPTIONS
net p10p1 detect #...
loc eth1 detect #...
vpn tun+
Мой /etc/shorewall/zones
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
loc ipv4
vpn ipv4
Мой /etc/shorewall/masq
#INTERFACE:DEST SOURCE ADDRESS PROTO PORT(S) IPSEC MARK USER/ SWITCH ORIGINAL
# GROUP DEST
p10p1 10.0.0.0/24
Попробуйте изменить правило:
ACCEPT net $FW udp 1194
Быть :
ACCEPT:info net $FW udp 1194
Затем следите за файлом / var / log / syslog, чтобы увидеть, запущено ли соединение.
Убедитесь, что в файле / etc / shorewall / policy есть раздел, позволяющий подключать VPN к LOC и LOC к VPN:
loc vpn ACCEPT
vpn loc ACCEPT
... или правила в файле / etc / shorewall / rules, чтобы разрешить loc для vpn и vpn для loc.
ACCEPT loc vpn
ACCEPT vpn loc
И в вашем файле / etc / shorewall / tunnels должно быть это:
openvpnserver:1194 net 0.0.0.0/0
Если все это настроено и работает, у вас может быть проблема с конфигурацией openvpn. Вот пример моей конфигурации с изменениями в соответствии с вашей конфигурацией.
# General Options
local your.public.ip
dev tun0
proto udp
port 1194
topology subnet
client-config-dir /etc/openvpn/ccd
# Certificate locations
ca /etc/openvpn/easyrsa/keys/ca.crt
cert /etc/openvpn/easyrsa/keys/gateway.crt
key /etc/openvpn/easyrsa/keys/gateway.key
dh /etc/openvpn/easyrsa/keys/dh2048.pem
# Who the openvpn process run as
user nobody
group nogroup
# Use this range for IP's
server 10.34.56.0 255.255.255.0
persist-key
persist-tun
# Allow client to client traffic
client-to-client
# Set VPN as Default GW
#push “redirect-gateway def1″
# Push routes to client (prefered over default route)
push "route 10.0.0.0 255.255.255.0"
#set the dns servers
push “dhcp-option DNS 10.0.0.1″
status /var/log/openvpn-status.log
verb 5
log-append /var/log/openvpn
comp-lzo
keepalive 20 120