当虚拟⽹卡配置成⾃动获取ip的时候
当虚拟⽹卡配置成主动获得ip的时⾠,windows的DHCP client办事将做为DHCP客户端为假造⽹卡获得ip地址,然后设置ip天址,DHCP和谈的discover/offer/request/ack皆没有标题,⼤家可以在如何看电脑配置了解,统统⼀般,discover将获得tap-win32驱动内部DHCP服务器的呼应,收收offer,…但是待到租约时候的⼀半或因为某种缘由(好⽐脚动绝约,⼤概戚眠/叫醒)需求续约的时刻,某些以0.0为⽬标ip地址的对DHCP办事器的拜候将会返回⽑病,经测试,那⾥的"某些"在分歧的windows版本上是纷歧样的(在我的开辟机上,172.16.0.0/172.161.0.0/17.110.0.0…不成⽤,⽽172.17.0.0/17.16.0.0是可⽤的,在家⾥的呆板上测试成果⼜纷歧样…),如斯⼀去windows的DHCP client服务将初末没法联络到当初租给它ip地址的地址以0.0末端的服务器,那末当租约⼯夫过了x(按照DHCP实现战现场设置装备摆设肯定)时,windows的DHCP client效劳将主动丧失虚拟⽹卡的ip的ip地址,然后从头倡议discover的进程,⽽tap-win32的驱动只给3次DHCP request包中client地址和OpenVPN配置的地址没有相称的机遇,也就是道discover的次数是遭到限定的,次数到期以后,凭据tap-win32的真现逻辑,实拟⽹卡将再也没法从DHCP服务器0.0获得ip地点了,同时在windows体系⽇记中报犯错误,此时只能重启OpenVPN客户端了
2.2.故障现象⼆
2.2.1.⽑病重现
正在内⽹某些机械毗连有标题问题,别的机械就没有问题,好⽐经由过程⽆线毗邻便出有标题问题。
2.2.2.妨碍剖析
1.发现ping⽋亨OpenVPN服务器的虚拟⽹卡ip起⾸查看其物理⽹卡可否ping 通,发现此时19
2.168.81.28都⽋亨了,断开OpenVPN客户端就能够ping通;
2.查看OpenVPN服务器的⽇志和OpenVPN客户端⽇志,发现服务器还在不竭发送OpenVPN-PING给客户端,期待跨越了keepalive设置的时间,便发送⼀个客户端重启旌旗灯号,因⽽客户端从新毗邻;八月十五祝福语短句子
3.启动OpenVPN客户端后通过route print查看客户端地点机器的路由表,发明有两条内⽹192.168.1.0/24⽹段的路由,⼀条是以物理⽹卡为出⼝,另外⼀条以虚拟⽹卡为出⼼,⽽要念接见81.28则必需通过1.254,会见1.254必需以物理⽹卡为出⼝;
无法获取ip地址 4.查看OpenVPN服务器的配置,发现其将40⽹段的路由给推送了下来,因⽽192.168.1.0/24⽹段的OpenVPN客户端在毗连上OpenVPN服务器以后就⽆法和192.168.1.0/24⽹段之外的主机通信了。
2.2.
3.阐发总结
1.之以是这个题⽬很隐藏,缘故原由有两⾯,第⼀,⼤家可以在怎么看电脑配置了解,OpenVPN服务器和OpenVPN客户端通信运⽤UDP和谈,UDP不必要确认,果此从81.28发来的OpenVPN服务器的数据包都能被40⽹段的OpenVPN客户端领受,⽽反过来就不可了。假设利⽤tcp协议的话,则很快就会断开;第两,在测试的时分,⼤家可以在如何看电脑配置了解,只是将客户端挂在那边,没有任何数据在上⾥传输,如果传输数据,则顿时就会发现数据传不外往;杜鲁门主义
2.OpenVPN服务器推送下来的路由必然不克不及和OpenVPN客户端地点主机的路由相冲突,因此务必在阐明⽇记时寄望以下的正告信息:
WARNING: potential route subnet conflict between local LAN [192.168.1.0/255.255.255.0] and remote VPN
[192.168.1.0/255.255.255.0]
3.题⽬解决
3.1.路由题⽬标办理
必然确保没有路由表项抵触,⼤家可以在怎么看电脑配置了解,除经由过程路由表以外,借要查看路由缓存,⼤家可以在电脑配置怎么看了解,Linux上的路由缓存能够经过route C检察,windows已知。
3.2.OpenVPN的配置参数
白银盘里一青螺的上一句 OpenVPN中针对windows客户端有⼀个参数:ip-win32。⼀向以来这个参数都被疏忽了,现实上就是因为这个参数被疏忽引发了花了好久才解决的题⽬。我们普通其实不配置这个参数,是以OpenVPN将利⽤adaptive⾃顺应形式,起⾸将采取dynamic停⽌测验考试,⼤家可以在怎么看⾃⼰电脑配置了解,⽽adaptive模式中的dynamic不克不及跟任何参数,⽽实践上
怎样开通微博账号dynamic模式有两个参数可以设置:
dynamic [offset] [lease-time]
此中第⼆个参数lease-time就是租约时间,默许是⼀年,第⼀个参数offset影响了DHCP服务器的ip地址,在OpenVPN的server模式下,假设地址池是x.y.0.0/16,那么客户端DHCP服务器的ip为:
ip=(x.y.0.0&&offset==0)||(x.y.0.offset&&offset>0)|| (x.y.255.255+offset&&offset<0)
3.3.dynamic体例处理
可睹假设offset与默许值0,那么客户端的DHCP服务器的ip地址将是⼀个收集地址,OpenVPN其实不假定windows是不⾏会见收集地址,同时也不假定winsock的任何*SP过滤⾏动,是以将0.0地址作为DHCP服务器地址对OpenVPN来说是合理的,可是在windows机器上能够就会呈现上述希罕的问题。
车抵押贷款押车吗 假如offset不为0,还要属意⼀种情形,那就是不能将DHCP服务器的ip地址和分派给OpenVPN客户端虚拟⽹卡的ip地址反复,⽐如offset为2,第⼀个衔接的客户端将得到x.y.0.2这个地址,⽽DHCP服务器也将得到这个地址,这在初始化⽹卡ip地址的时⾠就会泛起冲突,因此要留神这⼀点。倡议offset使⽤-1,⼤家可以在查看电脑配置命令了解,如许DHCP服务器ip地址将会是x.y.255.254,正常环境下很易使⽤到这个ip,除⾮特意分派。
3.4.⾮dynamic体式格局解决
使⽤netsh或者ipapi或者manual体式格局配置ip地址。netsh和ipapi的圆式和DHCP client服务⼤概会辩论,⽐⽅虚拟⽹卡的状况会不断在"正在获取ip地址"但是现实上ip地址已得到并设置上了,由于和windows的DHCP client服务相⼲,今朝并没有对这类形态举⾏测试。netsh/ipapi和DHCP的希罕征象和windows的版本也有⼲系。最清洁的体例就是manual⽅法设置ip地址。然⽽这需要⽤户按照OpenVPN客户端的输出疑息⼿⼯配置ip地址,因此并不保举使⽤。
3.5.修正tap-win32驱动⽅式解决
点窜ProcessDHCP函数逻辑并将DHCP的限造次数增添到⼀个很年夜的值:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论