欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Linux PPTPD 构建的 VPN 服务器连接无法进入外部网络和 619 错误的解决方案

最编程 2024-07-15 18:34:29
...

原始出处:http://www.wanghailin.cn/linux-pptpd-619-internet/

619错误的原因有很多,下面给出原因列表,供大家排查


1、logwtmp冲突

解决:编辑 /etc/pptpd.conf,找到logwtmp用#注释掉


2、防火墙拦截

可以关闭防火墙:


service iptables stop


也可以修改拦截规则(建议)


iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

iptables -A INPUT -p tcp --dport 47 -j ACCEPT

iptables -A INPUT -p gre -j ACCEPT

iptables -A POSTROUTING -t nat -s 192.168.9.0/24 -o eth0 -j MASQUERADE

iptables -A INPUT -p UDP --dport 53 -j ACCEPT

service iptables save


iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

iptables -A INPUT -p tcp --dport 47 -j ACCEPT

iptables -A INPUT -p gre -j ACCEPT

iptables -A POSTROUTING -t nat -s 192.168.9.0/24 -o eth0 -j MASQUERADE

iptables -A INPUT -p UDP --dport 53 -j ACCEPT

service iptables save

3、sysctl错误,解决方法详见下面的无法上网解决方法


4、无法支持localip指定


编辑/etc/pptpd.conf文件:


vi /etc/pptpd.conf

在下面字段的前面加上#即可:



#localip 192.168.0.1

#remoteip 192.168.0.234-238,192.168.0.245


无法上外网解决办法


1.、请确保你的MS-DNS和防火墙已经正确配置:


防火墙按照下面方法配置:


iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 你的公网IP

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

若出现无法连接,可以尝试按照上面解决619错误的设置方法设置


编辑/etc/ppp/options.pptpd:


vi /etc/ppp/options.pptpd

去掉ms-dns前面的#,并修改成如下字段:


ms-dns 8.8.8.8

ms-dns 8.8.4.4


2、编辑/etc/sysctl.conf


将“net.ipv4.ip_forward”改为1


同时在“net.ipv4.tcp_syncookies = 1”前面加# 


3、执行下面的命令

sysctl -p


4、如此执行后,应该可以正常连接外网了,若还是不能连接外网,请检查你在执行上面的命令时,是否获得了下面的错误信息:

5、如果有上面的错误,先运行下面两个命令,再重新执行sysctl -p


modprobe bridge

lsmod|grep bridge


这样就能完美解决问题啦,若还是报错,详见:

http://www.wanghailin.cn/scka/centos6-sysctlconf-error/


Centos 6下修改sysctl.conf后及其容易出现报错信息


无法正常完成修改


sysctl.conf涉及linux重要的内核优化,搭建×××等操作


所以必须解决这个问题



XEN架构


我起先是在我XEN架构的香港VPS里遇到了这个问题


执行下面的命令后相当容易的解决了问题



modprobe bridge

lsmod|grep bridge

 OpenVZ架构


而在我OpenVZ架构的美国VPS里执行上面的命令却得到了下面的回馈:


FATAL: Module bridge not found.

看来这样的命令是无法解决问题的,查阅了一番资料后,在一个国外博客内找到了解决方案


运行下面的命令即可:


rm -f /sbin/modprobe

ln -s /bin/true /sbin/modprobe

rm -f /sbin/sysctl

ln -s /bin/true /sbin/sysctl

完成上面的命令后,便可解决问题了!


[PPTPD]×××解决PTY read or GRE write failed问题

使用VPS搭建的×××用×××在最近一次系统升级后经常出现连接断开和无法连接的现象(619等错误),

调查了linux的系统日志(syslog),发现每次连接失败都会出现以下日志内容,


GRE: read(fd=6,buffer=80504c0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs

CTRL: PTY read or GRE write failed (pty,gre)=(6,7)

CTRL: Reaping child PPP[13354]

CTRL: Client XXX.XXX.XXX.XXX control connection finished



开始以为是GRE出了问题,但是查看了升级日志后发现GRE并没有升级,后来通过谷哥和度娘找到了解决办法,在此MARK一下。

1.打开调试模式,修改/etc/ppp/pptp-options 文件,找到


#debug

#dump

取消行前的注释,重启pptpd服务进入调试模式


2.分析日志后发现是logwtmp版本的与pptpd版本不一致的原因导致的问题,打开/etc/pptpd.conf文件,找到


logwtmp

注释掉logwtmp后,重新启动pptpd,再次连接后一切恢复正常。


3.最后如果你的服务器启用了proxyarp功能的话,每次非正常断开连接后,不要忘记arp -d一下。


#windows 

arp -d

#linux

sudo arp -d -a