![为路由 OpenVPN 配置 Shorewall](https://linux22.com/image/635013/%E4%B8%BA%E8%B7%AF%E7%94%B1%20OpenVPN%20%E9%85%8D%E7%BD%AE%20Shorewall.png)
我有一台 Ubuntu 服务器 14.04 机器,用作 NAT 路由器。路由是使用 Shorewall 实现的,主要符合本教程. LAN 有子网10.0.0.0/24
在这台机器上,我还想运行一个 OpenVPN 服务器,它监听端口 1194(udp)。连接到此 VPN 的客户端(来自互联网)应该会发现自己位于子网中10.34.56.0/24
。VPN 子网中的主机应该能够通过 udp 和 tcp 连接访问 LAN 子网中的主机。此外,VPN 子网中的主机应该能够通过我的服务器(伪装)访问互联网。
我的问题是:我该如何配置 Shorewall 来实现这一点?
A)连接的 VPN 客户端应该从 OpenVPN 服务器获得答复
b)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
答案1
尝试改变规则:
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