分类 全部文章 下的文章

ikev2 客户端mtu引起的网络故障

网络拓扑:

                  InWall Internet
                          |
                          | 
     ikev2 客户端-------路由器-----openvpn mtu1400-----VPS-------OutWall Internet
                          |
                          |
                     ikev2服务器

故障现象:
ios的ikev2客户端打开境内外网站正常
windows的ikev2客户端境内网站正常,不能打开境外https网站,境外http网站大部分资源加载不全

排查:
windows连接vpn后,使用ipip.net查看出口公网ip,发现已经是ikev2 vpn服务器出口ip,ping 境外ip是通的,telnet检查443端口是通,curl测试发现卡在证书协商
据此基本可以确定是mtu引起的问题,使用命令ping -l 1370 -f 境外网址,不断调整包大小,发现最大mtu是1370

解决办法:
连接vpn后,使用命令
netsh interface ipv4 set subinterface "vpn名称" mtu=1350 store=persistent
修改windows ikev2 虚拟网卡mtu为1350
问题解决

总结:
一开始使用的是ios的ikev2客户端,都没有出现问题,查找资料发现苹果系的ikev2客户端默认mtu是1280,苹果选择这个mtu大小还有一个原因是ipv6的最小包大小是1280
ikev2服务器strongswan应该是可以设置mtu的,后续更新。

附:
strongSwan Android client: MTU 1400
MacOS / iOS built-in IPsec client: MTU 1280
Windows built-in IPsec client: MTU 1400
Cisco VPN client: MTU 1300

相关文章链接:
windows使用ikev2遇到的坑,及批处理batch脚本和powershell脚本
使用ping测试路径里设备的mtu
MTU woes in IPsec tunnels and how you can fix it

公网服务器安装routeros后的安全设置

最近很多朋友尝试在vps或者云服务器上安装ros,由于服务器是公网ip,安全风险很大,在这里写一下安装routeros后的安全设置。如何在云服务器上安装routeros,可以参考 Google Cloud Platform(gcp)谷歌云安装Routeros青云主机安装routeros,附一键安装routeros脚本

routeros安装完成首次启动是没有密码的,并且所有管理端口是开放的,也就是说,任何人只要先于你设置了密码,你就失去了控制权。

如果你是公有云(如阿里云,谷歌gcp等)的ecs上安装的话,先要设置安全组或者防火墙只允许自己宽带的公网ip访问,这样可以最大限度保证自己能在第一时间设置密码。如果是普通idc的vps的话,只能加快手速了。

1,使用webfig或者winbox登陆到routeros后,第一件事就是设置密码,路径是/webfig/#System:Password

2,关闭不需要的管理端口,路径是/webfig/#IP:Services,这里建议关闭除winbox和www的所有服务,并把开放的服务修改成其他端口号

3,修改管理员账号,/webfig/#System:Users,新建管理员,记得group选full取得所有权限,使用新管理员账号登陆routeros后禁用admin账号,避免输错管理员账号密码把自己关在外面

4,配置完其他后,记得在防火墙关闭公网dns查询,/webfig/#IP:Firewall.Filter_Rules.new,chain选input,protocol选udp,dst.port写53,in.interface选你的公网接口如ether1,最后action选drop。这样就能防止你的routeros被用来做ddos的放大攻击工具攻击别人,防止云服务商或者idc因为你的攻击行为(尽管非你本意)关闭你的服务器。

使用dnsmasq基于大陆域名白名单分流解析域名

20210617更新:RouterOS使用DNS转发功能实现域名分流解析
20210127更新:使用overture替换dnsmasq做域名分流解析
有朋友问我怎么用dnsmasq做分流解析,其实挺简单,下面介绍一下。

以下以debian系linux为例,已在路由器做ip地址分流,参考routeros配置vpn分流大陆ip

1,安装dnsmasq

apt update
apt install dnsmasq

2,配置dnsmasq,默认使用8.8.8.8和8.8.4.4解析

vi /etc/dnsmasq.conf

粘贴下面三行到文件末尾

no-resolv
server=8.8.8.8
server=8.8.4.4

3,配置dnsmasq的解析白名单
这里使用了felixonmars/dnsmasq-china-list的大陆域名白名单
这个列表使用了114.114.114.114的dns服务器,这里建议使用运营商给你的dns服务器,一是解析会快一点,二是cdn识别会更准确

这里假设拨号获得的dns服务器是223.5.5.5,可以使用下面命令来生成使用运营商dns服务器的域名列表

curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/accelerated-domains.china.223.5.5.5.conf

如果需要使用大陆dns服务器解析apple或者google的域名,可以使用下面命令生成对应列表,这里我不推荐。

curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/apple.china.223.5.5.5.conf
curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/google.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/google.china.223.5.5.5.conf

4,重启dnsmasq服务使配置生效

service dnsmasq restart

5,测试dns分流解析
首先使用大陆dns服务器解析google.com,多次测试得到的ip地址并不是google的ip,可以用ipip.net来查询ip所属

dig google.com @223.5.5.5

然后使用dnsmasq解析google.com,多次测试可以发现ip地址是google的

dig google.com @127.0.0.1

6,自己添加域名到白名单
别人制作的域名列表中如果不包含自己需要的域名,可以向列表追加

echo 'server=/你需要的域名/223.5.5.5' >>/etc/dnsmasq.d/accelerated-domains.china.223.5.5.5.conf

ipad使用utm安装windows7

ipad使用utm安装windows7
实际安装时间约半小时,最后一个阶段“正在完成”用时最长,用了15分钟以上,剪掉了
ipad pro 2020实际体验比较糟糕