openvpn:允许客户端访问互联网

openvpn:允许客户端访问互联网

我已经设置了一个 OpenVPN 服务器,我可以从各种客户端连接到它。我还可以访问本地 LAN (192.168.2.xxx) 中的资源。但是,一旦客户端连接到我的 VPN 服务器,它就无法访问互联网。

这是我的配置:

local 192.168.2.105

dev tun
proto tcp
port 4567

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/raspberrypi.crt
key /etc/openvpn/easy-rsa/keys/raspberrypi.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig 10.8.0.1 10.8.0.2

push "route 10.8.0.1 255.255.255.255"
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.2.1"

log-append /var/log/openvpn/openvpn.log

persist-key
persist-tun
group nogroup
user nobody
status /var/log/openvpn/openvpn-status.log 20
verb 4

client-to-client
comp-lzo
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher AES-128-CBC

对于客户来说:

client
dev tun
proto tcp
remote xxxxx 4567
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ns-cert-type server
key-direction 1
cipher AES-128-CBC
comp-lzo
verb 3
mute 20

我怀疑问题在于,当我从其他 WIFI 或通过移动连接连接到我的 VPN 服务器时,我的客户端会从其他子网获取 IP 地址,例如 192.168.1.0/24 或 10.0.0.0/8。

我收到以下错误:

MULTI: bad source address from client [xxx.xxx.xxx.xxx], packet dropped

我见过一些建议创建客户端配置文件并设置 iroute 选项的解决方案。但是,我不确定此解决方案是否对最新版本的 openVPN 仍然有效。

我应该能够配置我的 VPN 服务器,使其允许来自特定子网的客户端访问互联网。我猜 192.168.1.0/24 和 10.0.0.0/8 应该足够了。

答案1

我这样做的方式:

push "redirect-gateway def1"
push "dhcp-option DNS 192.168.2.1"    
push "topology subnet"
topology subnet

和:

sudo iptables -A FORWARD -o eth0 -i tun0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

相关内容