请教应该如何实现docker bridge网络pptp的nat穿透

新手上路,请多包涵

容器镜像为centos:7.5.1804,网络为默认bridge

可以排除是GFW问题,是外网机器连接外网pptp

宿主机是能够正常连接pptp的

如果容器使用docker配置network指定host可以正常连接pptp没有问题,但是bridge模式有问题。

bridge环境下的错误情况

pptpd错误日志

Jul 17 07:29:54 pptp-us82 pppd[14349]: Plugin /usr/lib64/pptpd/pptpd-logwtmp.so loaded.
Jul 17 07:29:54 pptp-us82 pppd[14349]: pptpd-logwtmp: $Version$
Jul 17 07:29:54 pptp-us82 pppd[14349]: pppd 2.4.5 started by root, uid 0
Jul 17 07:29:54 pptp-us82 pppd[14349]: Using interface ppp0
Jul 17 07:29:54 pptp-us82 pppd[14349]: Connect: ppp0 <--> /dev/pts/0
Jul 17 07:29:54 pptp-us82 pptpd[14348]: GRE: read(fd=7,buffer=562107a5a3e0,len=8260) from network failed: status = -1 error = Protocol not available
Jul 17 07:29:54 pptp-us82 pptpd[14348]: CTRL: GRE read or PTY write failed (gre,pty)=(7,6)
Jul 17 07:29:54 pptp-us82 pppd[14349]: Modem hangup
Jul 17 07:29:54 pptp-us82 pppd[14349]: Connection terminated.
Jul 17 07:29:54 pptp-us82 pppd[14349]: Exit.

而且如果重启pptpd服务,在容器内可以连接上pptp一小段时间,但很快又会自动断开,再次连接就连接不上了。

个人的抓包分析

clipboard.png

显示应该是PPP LCP 协商pptpd响应包无法抵达pptp客户端

网上查询了部分博客资料PPTP穿透NAT分析

我自己感觉是docker默认的iptables配置问题,导致gre协议无法正确抵达容器内客户端,但是自己本身对iptables不太了解,所以想请教一下。

阅读 3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题