7 networking ubuntu debian routing openvpn
我有一个运行在我的服务器上的 OpenVPN 客户端,在不同国家的远程网络上获取公共 IP。客户端配置如下:
dev tap
remote a.b.30.7
float a.b.30.7
port 5167
ifconfig a.b.28.178 255.255.255.128
route-gateway a.b.28.129
#redirect-gateway def1
secret woot.key
cipher AES-128-CBC
dhcp-option DNS a.b.8.8
Run Code Online (Sandbox Code Playgroud)
对重定向网关进行了注释,以便我的服务器(运行 openvpn 客户端)不会被 VPN 连接“接管”。我可以将服务绑定到 tap0 接口(即 httpd 等),并在另一个国家/地区使用此 IP 运行网站。运行 openVPN 客户端的服务器所在的 ISP 没有适当的出口过滤,因此 VPN 的流量可以使用另一个国家的公共 IP 离开 eth0 的默认网关。只有入站流量通过 VPN 路由(即传入的 httpd 请求),但出站流量通过使用 VPN 公共 IP 欺骗的 eth0 流出。没有任何关于路由或 iptables 的麻烦,这在 DEBIAN 服务器上没有问题。明显的好处是我拥有常规 eth0 接口的速度和路由,但 IP 位于不同的国家/地区。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.y.150.64 0.0.0.0 255.255.255.224 U 0 0 0 eth0
a.b.28.128 0.0.0.0 255.255.255.128 U 0 0 0 tap0
0.0.0.0 x.y.150.65 0.0.0.0 UG 0 0 0 eth0
Run Code Online (Sandbox Code Playgroud)
xy 是实际服务器的网络,ab 是远程 openvpn 网络。
问题?完全相同的事情在 Ubuntu 中不起作用,我不知道为什么。我已经在无数 Debian 服务器上做到了这一点,没有任何问题,绝对没有自定义路由或任何类型的 iptables 规则。两台服务器都没有运行防火墙。我相信这是一个非常基本的问题,或者 Ubuntu 发生了某种奇怪的事情。值得注意的是,如果我取消对重定向网关的注释(应该如此),VPN 确实可以在 Ubuntu 服务器上运行,除非这不是我想要的。我仍然需要从它的主界面 eth0 访问服务器。
Debian 服务器跟踪(工作中):
# 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 (a.b.29.1) 39.161 ms 39.140 ms 39.332 ms
2 asdf (a.b.30.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.
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
8.8.8.8 是谷歌的公共 DNS。
无法从外部访问 VPN IP。有趣的是,如果我要:
ssh -b [debian.server.openvpn.client.IP] user@[ubuntu.server.openvpn.client.IP]
Run Code Online (Sandbox Code Playgroud)
我能够连接/ping/查看它。这是在 Debian 和 Ubuntu 机器上运行的两个单独的 VPN 客户端,在与路由表中相同的 ab 网络上(远程网络上的不同 IP)。debian 服务器 VPN 客户端 IP 是可公开访问的,但在 Ubuntu 服务器上则不是!只来自 ab!
目标是从 eth0 欺骗流量,而不是通过 VPN 将其发回并浪费 VPN 带宽。此外,相同的 VPN 配置可以在 debian 服务器上正常运行。我可以将 Ubuntu 机器上的 VPN 配置放到 Debian 机器上,这很好。
Debian 服务器运行带有 2.6.32-bpo.5-xen-amd64 的 Debian 5 64 位
Ubuntu 服务器运行带有 2.6.32-24-server 的 Ubuntu 10.04.1 LTS
我认为这可能是内核模块和 tun.ko 的问题,因为我在 Ubuntu 服务器上没有使用 modprobe -l 看到它,但在 debian 服务器上没有看到它。如果有兴趣,请参阅https://bugs.launchpad.net/ubuntu/+source/linux/+bug/565856。我尝试了解决方法无济于事。我认为这是另一回事。
任何帮助是极大的赞赏!对于在必要时缺乏适当的网络术语,我深表歉意,我只有中级网络知识,因为这在 debian 中对我来说很容易,所以不必做任何特别的事情。
小智 1
我必须承认,我(尚未)完全理解您想要实现的目标。但我认为你希望你的 Ubuntu(和 Debian)服务器可以通过你通过 OpenVPN(传入流量)获得的 IP 访问,但通过你的(Ubuntu)服务器本地的 eth0 接口发送你自己的(= Ubuntu 服务器)流量(“欺骗”) ") VPN-IP。或者沿着这些思路。我不确定这是否是一个很好的主意(可能取决于你这样做的原因),但我认为这是有原因的,正如你所说,它确实适用于 Debian。因此,我们不要详细说明这一点(尽管稍后它可能仍然很重要)。
此外我想知道为什么这条线
route-gateway a.b.28.129
Run Code Online (Sandbox Code Playgroud)
包含在您的 VPN 配置中不会(似乎)导致路由表中的条目。
另外,我不确定您显示的两个跟踪路由的目标/见解是什么...您似乎正在尝试8.8.8.8通过 VPN 隧道跟踪路由。由于这是传出流量,我不太了解它与您的问题的相关性。我想说(查看您的路由表)您以这种方式生成的流量不会(不应该?)通过隧道。我发现 Debian 上似乎就是这种情况……但我不明白为什么会这样。查看路由表,我宁愿假设您尝试发送的跟踪路由包tap0(应该是?)“重新路由”到eth0(默认路由)。
现在这让我猜测我对你的问题的看法:IP转发。难道是你的 Debian 机器启用了它,而 Ubuntu 上它被禁用了?您可以通过访问上面的链接(或使用您最喜欢的搜索引擎或 Ubuntu 手册)找到更多信息(例如,如何查明是否启用了 IP 转发)。
您能够访问 Ubuntu 上的 SSH 守护进程表明您已经非常接近了:)。所以了解你的意思可能很重要
“debian 服务器 VPN 客户端 IP 可以公开访问,但在 Ubuntu 服务器上却不能!”
当 Ubuntu 机器“无法访问”时,您想要做什么(即您尝试连接到什么服务)?访问其网络服务器?该服务正在侦听哪个 IP?
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |