Назад | Перейти на главную страницу

Настройка Shorewall для маршрутизируемого OpenVPN

У меня есть сервер 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