当前位置: 首页 > 知识库问答 >
问题:

ubuntu - ocserv(openconnect server) 搭建后 使用anyconnect连接成功了 但是无法访问外部网络 能否告知一下如何排查这种情况 或者是如何进行修复?

澹台华晖
2024-08-08

连接成功时的路由表

default via 181.214.136.1 dev eth0 proto static
10.12.0.86 dev vpns0 proto kernel scope link src 10.12.0.1
181.214.136.0/24 dev eth0 proto kernel scope link src 181.214.136.245

网络信息

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000
    link/ether bc:24:11:ba:a9:68 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    altname ens18
    inet 181.214.136.245/24 brd 181.214.136.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a12:f8c1:50:8::1124/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::be24:11ff:feba:a968/64 scope link
       valid_lft forever preferred_lft forever
17: vpns0: <POINTOPOINT,UP,LOWER_UP> mtu 1392 qdisc fq state UNKNOWN group default qlen 500
    link/none
    inet 10.12.0.1 peer 10.12.0.86/32 scope global vpns0
       valid_lft forever preferred_lft forever
    inet6 fe80::ef03:f3a7:d7ab:dd7c/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

日志

Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* suggesting DPD of 300 secs
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* configured link MTU is 1420
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* peer's link MTU is 1500
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* sending IPv4 10.12.0.86
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* adding DNS 8.8.8.8
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* adding DNS 1.1.1.1
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* adding special split DNS for Apple
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* Link MTU is 1420 bytes
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* selected DTLS compression method lzs
Aug 08 06:08:23 adolph ocserv[72628]: worker[passfirewall]: *.*.*.* selected CSTP compression method lzs

共有1个答案

慕佑运
2024-08-08

当使用 Cisco AnyConnect 成功连接到 ocserv 服务器但无法访问外部网络时,通常与路由设置、NAT(网络地址转换)配置或防火墙规则有关。以下是一些排查和修复的步骤:

1. 检查路由表

从您提供的路由表来看,默认路由(default via 181.214.136.1 dev eth0 proto static)指向了 eth0 接口,这是您的物理网络接口。但是,当您通过 VPN 连接时,您希望流量通过 VPN 接口(vpns0)路由。

解决方案

  • 添加 VPN 路由:确保所有需要通过 VPN 的流量都被路由到 VPN 接口。您可能需要添加或修改路由规则,使所有非本地(非 10.12.0.0/16)流量通过 VPN 接口。
  • 使用 ip route add:添加一条路由规则,将所有非本地和非 VPN 网络的流量通过 VPN 接口。例如:

    sudo ip route add default via 10.12.0.1 dev vpns0 table vpn
    sudo ip rule add from 10.12.0.0/16 table main
    sudo ip rule add to 10.12.0.0/16 table main
    sudo ip rule add to 127.0.0.0/8 table main
    sudo ip rule add table vpn suppress_prefixlength 0
    sudo ip route flush cache

    注意:上述命令可能需要根据您的具体网络配置进行调整。

2. 检查 NAT 设置

如果您的服务器或路由器配置了 NAT,确保 VPN 流量不会被 NAT 规则错误地处理。

解决方案

  • 检查 NAT 规则:查看是否有针对 VPN 接口的 NAT 规则,并确认它们是否适当。
  • 禁用 NAT:如果可能,尝试暂时禁用 NAT 以测试是否是 NAT 导致的问题。

3. 检查防火墙规则

确保防火墙规则允许 VPN 流量通过。

解决方案

  • 查看防火墙规则:检查服务器的防火墙设置,确保没有阻止 VPN 相关的流量。
  • 允许 VPN 流量:添加规则以允许 VPN 使用的端口和协议(如 IPsec 或 DTLS)。

4. 重启网络服务

有时,简单的重启网络服务或 VPN 服务可以解决临时的连接问题。

操作

  • 重启 ocserv

    sudo systemctl restart ocserv
  • 重启网络服务(如果适用):

    sudo systemctl restart networking

5. 查看日志

继续查看 ocserv 和系统日志,以获取更多关于连接问题的信息。

6. 测试连接

使用工具如 pingtraceroute 测试 VPN 连接和访问外部网络的能力。

ping 8.8.8.8
traceroute 8.8.8.8

这些步骤应该帮助您诊断和解决无法访问外部网络的问题。如果问题仍然存在,请考虑检查 VPN 客户端的配置或联系网络管理员。

 类似资料:
  • 我有一个粒子模拟项目,我已经工作了很多个小时,我将发布两个类。一个是粒子类,一个是main和Canvas类。我创建一个画布,然后得到它的BufferStrategy和一个Graphics在上面绘制。我使用更新循环来更新每一帧的粒子,并使用渲染循环来渲染每一帧的粒子。更新和渲染都是通过调用粒子数组列表中每个粒子的自渲染和自更新方法来完成的。现在这是我的问题。我有一个MouseListener,它在中

  • 问题是没有捕捉到此异常。尽管MongoDB引发以下异常: com.mongodb.mongosocketOpenException:在com.mongodb.Connection.socketstream.open(socketstream.java:63)在com.mongodb.Connection.internalstreamConnection.open(internalstreamCon

  • 问题内容: 即使文件在远程http服务器上不存在,它也会以静默方式返回,它只是将html页面保存到命名文件中。例如: 即使abc.jpg在google.com服务器上不存在,它只是默默返回,生成的不是有效的jpg文件,它实际上是html页面。我猜返回的标头(一个httplib.HTTPMessage实例)可以用来实际上告诉检索是否成功,但是我找不到的任何文档。 有人可以提供有关此问题的一些信息吗?

  • 问题内容: 我是T-SQL命令的新手,所以我在SQL逻辑中找到了一个可以使用它并想要对其进行测试的地方,但无法弄清楚我应该如何使用它: 请提出正确的用法。谢谢! 问题答案: 您在帮助中了吗?这是一个简单的例子:

  • 事件处理程序添加到GameGui.java类的GridPane中,从第82行开始。 基本上,我试图找到您在网格窗格中拖动这个对象的任何节点的索引。通过将SetonMouseEnter应用到gridpane中的每个节点,我可以在不拖动的情况下完成这一任务,但是当我试图利用SetonMouseDragEnter时,我什么也没有得到。 有人有办法让这个工作吗? 这些是我应用于GridPane中节点的事件

  • 这是一个使用合并排序的程序,从1到1000对1000个数字的列表进行排序。它显示原始列表,然后调用递归方法对其进行排序,然后显示。 代码中我不明白的是这两行: 合并排序(数字,低,中);//在方法中,它会说“这里” 合并排序(数字,中间1,高); 我是java的初学者,这与我所学的一切背道而驰,因为我无法理解如何在方法中调用方法。除非它是一个我怀疑的对象。有人能解释一下这两行代码的作用吗?

  • 我在一个DB中有两个表(和),它们每个都有一个称为的相互列。 我当前使用以下代码仅从中导入一些数据(,): 如果我也想从导入数据(例如,名为和的列),那么我应该向该代码添加什么? 我的目标是拥有这些钥匙: 编辑: 编辑2: 仍然得到一个错误:

  • 这是我的建筑。格雷德尔: 我试图找出问题所在,使用以下代码来分析问题: 结果是: