我一直试图在家里运行 ubuntu 16.04 的笔记本电脑和我办公室的 dd-wrt 路由器之间建立一个 openvpn 连接。问题是我在连接时无法访问互联网。需要注意的是,我希望所有流量都通过 vpn,包括互联网。dd-wrt 路由器对 openvpn 有以下配置:
dh /tmp/openvpn/dh.pem
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
keepalive 10 120
verb 4
#mute 3
log-append /var/log/openvpn
writepid /var/run/openvpnd.pid
management 127.0.0.1 14
management-log-cache 50
topology subnet
client-config-dir /tmp/openvpn/ccd
script-security 2
port 1194
proto tcp-server
cipher aes-128-cbc
auth sha1
comp-lzo yes
tls-server
ifconfig-pool-persist /tmp/openvpn/ip-pool 86400
client-to-client
push "redirect-gateway def1"
tcp-nodelay
tun-mtu 1500
mtu-disc yes
server 10.8.0.0 255.255.255.0
dev tun2
tun-ipv6
route 192.168.0.1 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
客户端脚本如下:
remote [remote ip] 1194
client
remote-cert-tls server
dev tun1
proto tcp
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
cipher AES-128-CBC
comp-lzo
redirect-gateway
ca ca.crt
cert awswin.crt
key awswin.key
当我使用此脚本连接时,连接已建立,并且当我查看远程路由器上的 openvpnlogs 时,它有关于由于“错误的源 ip [我的私有非 vpn ip]”而丢弃包的日志,当我添加一个名为 awswin 的文件时,这种情况会发生变化/tmp/openvpn/ccd/ 上的 (myclientname) 包含“iroute 192.168.0.0 255.255.255.0”。然后路由器停止丢弃包并将日志更改为“学习”。但是没有互联网。
最后我设法解决了这个问题。实际上它到处都有记录,但需要为我的路由器做一点改变。要通过 VPN 使您的路由器 NAT,您必须将此规则添加到 iptables: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 事情是我的路由器使用 eth1 作为接口,所以它没用。如果您不知道接口的编号,可以使用 eth+ 代替数字,“+”适用于任何数字。当然,当您使用 10.8.0.0/24 作为您的 vpn 网络(默认)时,此示例有效。