OpenVPN客户端没有redirect网关做三angular形路由和IP欺骗在Ubuntu上不工作

我有一个在我的服务器上运行的OpenVPN客户端,在另一个国家的远程networking上获取公共IP。 客户端configuration如下:

dev tap remote ab30.7 float ab30.7 port 5167 ifconfig ab28.178 255.255.255.128 route-gateway ab28.129 #redirect-gateway def1 secret woot.key cipher AES-128-CBC dhcp-option DNS ab8.8 

redirect网关被评论,以便我的服务器(运行openvpn客户端)不被VPN连接“接pipe”。 我可以将服务绑定到tap0接口(即httpd等),并在另一个国家/地区运行此IP的网站。 运行openVPN客户端的服务器所在的ISP没有出口过滤,所以VPN的stream量只能通过eth0的默认网关与其他国家的公网IP进行通信。 只有入站stream量通过VPN路由(即传入的httpd请求),但出站stream量通过VPN公网IP欺骗。 没有任何与路由或iptables四处乱跑,这只是没有问题..在DEBIAN服务器上工作。 显而易见的好处是我有正常的eth0接口的速度和路由,但在不同的国家有一个IP。

 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface xy150.64 0.0.0.0 255.255.255.224 U 0 0 0 eth0 ab28.128 0.0.0.0 255.255.255.128 U 0 0 0 tap0 0.0.0.0 xy150.65 0.0.0.0 UG 0 0 0 eth0 

xy是实际的服务器networking,ab是远程openvpnnetworking。

问题? 完全相同的事情在Ubuntu不工作,我不明白为什么。 我已经在无数的Debian服务器上做了这个,没有问题,绝对没有自定义路由或任何types的iptables规则。 两台服务器都不运行防火墙。 我相信这是一个非常基本的问题,或者Ubuntu有一些奇怪的事情正在进行。 值得注意的是,如果我取消了redirect网关的注销,那么VPN就可以在Ubuntu服务器上工作,除非这不是我想要的。 我仍然需要从它的主接口eth0访问服务器。

Debian服务器跟踪(WORKING):

 # traceroute -i tap0 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 40 byte packets 1 blah (ab29.1) 39.161 ms 39.140 ms 39.332 ms 2 asdf (ab30.1) 40.870 ms 40.879 ms 40.850 ms 3 sth-sbb2-ank35-1-ge26-100.dcs.net (217.78.35.5) 40.816 ms 40.818 ms 40.783 ms 4 google-gw.dcs.net (217.78.35.14) 40.780 ms 40.601 ms 40.565 ms etc. fine here. 

Ubuntu服务器跟踪(不工作):

 # traceroute -i tap0 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 * * * 2 * * * 3 * * * 4 * * * borked. 

8.8.8.8是Google公共DNS。

VPN IP无法从外部访问。 有趣的是,如果我要:

 ssh -b [debian.server.openvpn.client.IP] user@[ubuntu.server.openvpn.client.IP] 

我能够连接/ ping /看到它。 这是在Debian和Ubuntu上运行的两个独立的VPN客户端,与路由表(在远程networking上的不同IP)在同一个networking上。 debian服务器的VPN客户端IP是可公开访问的,但是在Ubuntu服务器上并不是这样! 只有从ab!

我们的目标是欺骗eth0stream量,而不是通过VPN发回,浪费VPN带宽。 而且,相同的VPNconfiguration可以在debian服务器上正常工作。 我可以把Ubuntu上的VPN的configuration放到Debian盒子里,这样很好。

Debian服务器使用2.6.32-bpo.5-xen-amd64运行Debian 5 64bit
Ubuntu服务器运行Ubuntu 10.04.1 LTS和2.6.32-24-server

我以为这可能是内核模块和tun.ko的问题,因为我没有看到它在Ubuntu服务器上的modprobe -l,但在Debian服务器上的DID。 如果感兴趣,请参阅https://bugs.launchpad.net/ubuntu/+source/linux/+bug/565856 。 我尝试了解决方法无济于事。 我认为这是别的。

任何帮助是极大的赞赏! 我很抱歉没有适当的networking条款在必要的地方,我只有中级的networking知识,因为这对我来说轻松在debian工作,并没有做任何特别的事情。

我不得不承认,我还没有完全理解你想达到的目标。 但是我认为你希望你的Ubuntu(和Debian)服务器可以通过你通过OpenVPN(传入stream量)获得的IP访问,但是通过本地到你的(Ubuntu)服务器的eth0接口发送你自己的(= Ubuntu服务器)stream量(“欺骗“)VPN-IP。 或沿着这些线路。 我不确定这是否是一个非常好的主意(可能取决于你为什么这样做),但我认为这是一个理由,正如你所说的,它与Debian一起工​​作。 所以我们不要详细说明这一点(尽pipe稍后它可能仍然很重要)。

进一步我想知道为什么行

 route-gateway ab28.129 

包括在您的VPNconfiguration中(似乎)不会导致您的路由表中的条目。

另外我不确定你所显示的两个traceroute的目标/洞察是什么…你似乎试图通过VPN隧道跟踪到8.8.8.8 。 由于这是传出stream量,我不太了解它与您的问题的相关性。 我会说(看你的路由表),你这样生成的stream量不是(不应该是)通过隧道。 我看到Debian上看起来就是这样的情况,但是我不明白为什么会出现这种情况。 看看路由表,我宁愿假设你试图在tap0上发送的traceroute包(应该是?)“重新路由”到eth0 (默认路由)。

现在,这带给我的猜测,我会为你的问题: IP转发 。 难道你的Debian盒子在Ubuntu上被禁用了吗? 您可以通过访问上面的链接(或使用您最喜爱的search引擎或Ubuntu手册)来find更多信息(例如,如何查找IP转发是否启用)。

你能够到达Ubuntu上的SSH守护进程表明你非常接近:)。 所以知道你的意思可能是至关重要的

“Debian服务器的VPN客户端IP是可公开访问的,但是在Ubuntu服务器上却不是!”

当Ubuntu机器“无法访问”时,你想要做什么(即你想要连接什么服务)? 访问它的networking服务器? 这个服务在监听什么IP?

Ubuntu可能有不同的反向path过滤默认值。 检查/proc/sys/net/ipv4/conf/...的各种rp_filter

如果这没有帮助,下一步将是确认数据包是进出tcpdump或wireshark。 同时确认你真的没有iptables -vL的防火墙。

检查rp_filering是否处于活动状态

 sysctl -a | grep \\.rp_filter 

查找= 1的接口

编辑/etc/sysctl.conf,并设置

 net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0 

这里有一个很好的网页http://www.tolaris.com/2009/07/13/disabling-reverse-path-filtering-in-complex-networks/