OpenVPN不是所有流量的默认网关


21

我正在尝试让我的客户端通过运行OpenVPN的VPS转发所有流量。如您所见,它将允许对域和原始IP地址执行ping操作,但是将不允许通过curl和traceroute进行的通信没有任何内容。未连接到VPN时,流量正常工作。

所有信息都在这里:https : //pastebin.com/tGspNefn

谢谢。

由于以下解决方案,配置工作正常:

服务器:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

客户:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3

/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 为什么要使用netmask 128.0.0.0?
2014年


3
下次提取相关信息并将其包含在问题中。Pastebin片段的寿命有限。
MLu 2014年

Answers:


34

解决方案分为两部分:

1.将所有流量重定向到隧道

最简单的解决方案-使用OpenVPN的--redirect-gateway autolocal选项(或将其放置在配置文件中)redirect-gateway autolocal

2.处理OpenVPN服务器上的流量

现在,隧道已建立,所有流量都进入隧道,并从tun0接口弹出到服务器端。

您需要配置两项以使其正常工作:

一种。启用数据包转发

默认情况下,在大多数发行版中,数据包转发都处于禁用状态,因此来自隧道接口的数据包永远不会到达公共接口。您必须通过以下方式启用转发:

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

经过测试,使更改永久生效 /etc/sysctl.conf

还要确保iptables没有阻塞转发的流量:

~ # iptables -I FORWARD -j ACCEPT

这足以进行测试-在生产中,您将需要使防火墙规则更加具体,但这不在本文范围内。

b。对来自隧道的出站数据包进行NAT

在启用转发的情况下,默认情况下将转发其数据包,而其源地址保持不变,这就是您的情况10.8.0.6-此类数据包要么被丢弃在ISP网关上,要么即使它们到达目的地,答复也永远找不到回头路。这些私人地址不可在互联网上路由。

解决方案是对出口流量进行NAT,即用10.8.0.6VPN服务器的公共IP 替换专用地址。这样可以确保答复到达VPN服务器,并在那里被转发回隧道。

~ # iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3.测试

现在,ping 8.8.4.4从您的VPN客户端尝试。您应该会看到一个答复。让我们知道是否:)


现在可以完美运行了。非常感谢您提供高质量的答案。
DrDinosaur 2014年

在客户端上,将pull添加到client.conf文件,或在命令行中添加--pull选项,以便客户端接受服务器推送的配置。另外,如果客户端在Windows Vista或更高版本下运行,请禁用UAC,否则客户端上运行的openpn服务将无法设置路由。
维克多

> b。NAT从隧道传出的数据包这对我很有帮助。
FelikZ 2015年

确实要考虑到FORWARD -j ACCEPT规则使服务器成为其所有接口之间的开放路由器。不得在生产系统上使用它。但是,对于一个HowTo来说,它基本上可以快速工作,这是一个很好的指令集。
Sprinterfreak

Redirect all the traffic into the tunnel客户端配置中的步骤吗?
飞机
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.