专栏首页技术向tcpdump调试pptp

tcpdump调试pptp

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/tcpdump_debug_pptp/

tcpdump调试pptp

在内网中有一个pptp client,奈何怎么也连接不上pptp server,可以用tcpdump调试下。

现象:

在客户端使用pptp命令行建立vpn,出现timeout错误

wenfeng@wenfeng-woniu:~/workspace$ sudo pptpsetup --create pivpn --server 10.134.118.131 --username wenfeng --password ty7938TYI --encrypt --start
Using interface ppp0
Connect: ppp0 <--> /dev/pts/2
LCP: timeout sending Config-Requests
Connection terminated.
Modem hangup

初步调试

在客户端所在机器使用tcpdump 监听,发现gre包没有回复。

在软路由端使用tcpdump监听,发现gre包应该回复给192.168.19.152, 但是回复给了10.135.80.126. pptp server地址在10.134.118.131

wenfeng@wenfeng-nec:~$ sudo tcpdump -v 'proto gre' -i wlp4s0b1
tcpdump: listening on wlp4s0b1, link-type EN10MB (Ethernet), capture size 262144 bytes
16:34:33.418488 IP (tos 0x0, ttl 63, id 37553, offset 0, flags [DF], proto GRE (47), length 56)
    192.168.19.152 > 10.134.118.131: GREv1, Flags [key present, sequence# present], call 4480, seq 1, length 36
        LCP, Conf-Request (0x01), id 1, length 22
        encoded length 20 (=Option(s) length 16)
          ACCM Option (0x02), length 6: 0x00000000
          Magic-Num Option (0x05), length 6: 0x0c5f864f
          PFC Option (0x07), length 2
          ACFC Option (0x08), length 2
16:34:33.444041 IP (tos 0x0, ttl 61, id 16265, offset 0, flags [DF], proto GRE (47), length 61)
    10.134.118.131 > 10.135.80.126: GREv1, Flags [key present, sequence# present], call 21013, seq 0, length 41
        LCP, Conf-Request (0x01), id 1, length 27
        encoded length 25 (=Option(s) length 21)
          ACCM Option (0x02), length 6: 0x00000000
          Auth-Prot Option (0x03), length 5: CHAP, MS-CHAPv2
          Magic-Num Option (0x05), length 6: 0x83c9a897
          PFC Option (0x07), length 2
          ACFC Option (0x08), length 2
16:34:36.358545 IP (tos 0x0, ttl 63, id 38010, offset 0, flags [DF], proto GRE (47), length 56)
    192.168.19.152 > 10.134.118.131: GREv1, Flags [key present, sequence# present], call 4480, seq 2, length 36
        LCP, Conf-Request (0x01), id 1, length 22
        encoded length 20 (=Option(s) length 16)
          ACCM Option (0x02), length 6: 0x00000000
          Magic-Num Option (0x05), length 6: 0x0c5f864f
          PFC Option (0x07), length 2
          ACFC Option (0x08), length 2
16:34:36.457045 IP (tos 0x0, ttl 61, id 16288, offset 0, flags [DF], proto GRE (47), length 61)
    10.134.118.131 > 10.135.80.126: GREv1, Flags [key present, sequence# present], call 21013, seq 1, length 41
        LCP, Conf-Request (0x01), id 1, length 27
        encoded length 25 (=Option(s) length 21)
          ACCM Option (0x02), length 6: 0x00000000
          Auth-Prot Option (0x03), length 5: CHAP, MS-CHAPv2
          Magic-Num Option (0x05), length 6: 0x83c9a897
          PFC Option (0x07), length 2
          ACFC Option (0x08), length 2
16:34:39.364961 IP (tos 0x0, ttl 63, id 38203, offset 0, flags [DF], proto GRE (47), length 56)
    192.168.19.152 > 10.134.118.131: GREv1, Flags [key present, sequence# present], call 4480, seq 3, length 36
        LCP, Conf-Request (0x01), id 1, length 22
        encoded length 20 (=Option(s) length 16)
          ACCM Option (0x02), length 6: 0x00000000
          Magic-Num Option (0x05), length 6: 0x0c5f864f
          PFC Option (0x07), length 2
          ACFC Option (0x08), length 2

可能的原因

GRE协议是于TCP,UDP协议平级的三层协议,它有一个最大的特点是没有端口这一概念。与OpenVPN不同,OpenVPN使用的是广泛的TCP和UDP协议,所有路由都能够支持,可以自由的NAT和端口映射。而GRE协议就不行了,因为没有端口的概念,导致路由器在进行NAT的时候无从下手,对于路由器来说,当它接收到一个GRE数据包,只能观察到它的源IP和目标IP,但是源IP由于NAT的原因可能这一个IP后面是好多台主机,同时目标IP也是这样,所以路由器无法判断这个数据包应该送到哪个主机上。

命令行配置pptp https://blog.csdn.net/hanyun9988/article/details/78568428

tcpdump指定抓取gre包 https://blog.csdn.net/Mr0Yang/article/details/52247885

tcpdump通用命令 https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

tcpdump指定使用的网卡 https://blog.csdn.net/norsd/article/details/65724919

GRE协议难以穿透路由器的解释https://blog.csdn.net/lvshaorong/article/details/71216227

应对方案

很不幸,我要绕开问题了。pptp由于其协议的原因很难穿透路由器nat,所以换为openvpn会好很多。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java面试-interrupt

    我们都知道,Java中停止一个线程不能用stop,因为stop会瞬间强行停止一个线程,且该线程持有的锁并不能释放。大家多习惯于用interrupt,那么使用它又...

    健程之道
  • Linux中的防火墙简介

    Linux防火墙这块儿的内容比较多,一直以来,都是一个使用者的角色,最近在看一些防火墙相关的知识,简单列一下,大家也可以了解一下。

    AsiaYe
  • WebRTC,P2P技术,IPv6的一些思考

    不过放心,这篇文章不会只告诉你p2p”是什么“,也不会仅仅告诉你”为什么“,而要深刻探讨它的设计”是否合理“。

    Jean
  • NAT模型如何同时兼顾性能、速度?蒸馏很有潜力!

    近年来,基于深度神经网络的机器翻译取得了飞速发展。目前大多数NMT模型都使用了编码器-解码器框架来实现,编码器将源语句的表示送入到解码器来生成目标句子;解码器通...

    AI科技评论
  • Cisco路由器之IPSec 虚拟专用网(内附配置案例)

    一、虚拟专用网的定义 虚拟专用网就是在两个网络实体之间建立的一种受保护的连接,这两个实体可以通过点到点的链路直接相连,但通常情况下他们会相隔较远的距离。

    小手冰凉
  • H3C 设备校园网双出口配置案例

    一、策略路由是什么? 在H3C设备上,谈到双出口,那么就避免不了策略路由这个概念,那么策略路由又是个什么鬼呢?

    小手冰凉
  • H3C 基本配置

    一、H3C的前世今生: H3C的前身华为3COM公司,是华为与美国3COM公司的合资公司(有传言说是当时Cisco起诉华为抄袭它的东西,所以华为找了一家美国挺有...

    小手冰凉
  • VMware 虚拟机NAT模式如何设置网络连接,从头到尾全过程

    3.网卡开启后设置ip地址,此处设置的ip和本机的ip没有关系,设置成你虚拟机里面运行的计算机需要的ip地址网段

    Python之道
  • 007.Kubernetes二进制部署Flannel

    kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通。flannel 使用 vxlan 技术为各节点创建一个可以互通的...

    木二
  • H3C | SR6616策略路由+单臂+nat组网不通问题经验案例

    组网中RT2做pbr和nat,对RT1访问2.2.2.2的流量做nat转换目的地址为4.4.4.4,并将该流量通过pbr扔到右侧流量清洗设备RT5,从R...

    网络技术联盟站

扫码关注云+社区

领取腾讯云代金券