我一直在尝试在我家运行 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]”而丢弃软件包的日志,当我在 /tmp/openvpn/ccd/ 上添加一个名为 awswin (myclientname) 的文件时,这种情况会发生变化,该文件包含“iroute 192.168.0.0 255.255.255.0”。然后路由器停止丢弃软件包并将日志更改为“学习”。但没有互联网。
答案1
最后我终于解决了这个问题。实际上,这个问题到处都有记录,但我的路由器需要做一点改动。要使路由器通过 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 网络(默认)时,此示例有效。