OpenVPN 服务器配置以路由互联网流量

OpenVPN 服务器配置以路由互联网流量

我在配置 OpenVPN 时遇到问题。

当我连接时会发生这种情况:我可以从客户端 192.168.42.6 ping 服务器 192.168.42.1,反之亦然。我可以访问 192.168.42.1 服务器上的监听守护进程(http 和 dns)。我可以使用其互联网 IP 访问服务器,但连接未在 VPN 中路由(我创建了跟踪路由,它通过我的家用路由器)。我无法访问任何其他互联网 IP(在 nmap 跟踪路由上,我只看到一行 192.168.42.1!)。

这是我的 OpenVPN 服务器配置:

port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.42.1"
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status openvpn-status.log
verb 4
script-security 2
push "redirect-gateway def1"
auth-user-pass-verify /home/openvpn/chroot/login.php via-file
port-share 127.0.0.1 4433
max-clients 10
daemon

以下是我的 iptables 配置的一部分:

# current configuration (i removed some lines concerning other ports)
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

# lines added for OpenVPN
iptables -A FORWARD -i tun0 -o em1 -s 192.168.42.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o em1 -j MASQUERADE

我能做什么?谢谢你的帮助。

答案1

根据您的问题和配置,我假设您打算允许客户端通过服务器访问互联网。

在这种情况下,在我看来,您的 openvpn 配置是正确的。

但是,您的过滤并不完整。实际上,您将其设置为将新数据包从 tun0 转发到 em0(我假设这是服务器上的以太网连接),但不转发任何后续数据包或从 em0 到 tun0 的任何数据包。几乎所有互联网协议都需要双向通信。

因此,我会在您的配置中添加以下行:

iptables -A FORWARD -i tun0 -o em1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i em1 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

您还应该确保 /proc/sys/net/ipv4/ip_forward 包含 1,如果不包含,则执行

sudo echo "1" > /proc/sys/net/ipv4/ip_forward

根据您的发行版,应该有一种方法可以使最后的设置永久生效(该命令只能使其持续到下次重新启动)。

相关内容