问题描述
- EasyConnect在Linux服务器中运行时,DNS无法解析baidu等原有网址
排查过程
确认是DNS解析问题,不是网络连接受限问题,通过
ping
IP地址反馈正常,看出网络没有受限,因此直接解决DNS问题。查看
/etc/resolv.conf
发现域名服务器已经被篡改分析
EasyConnect
软件,使用grep命令查找到了EasyConnect修改系统/etc/resolv.conf
的位置禁止
EasyConnect
对/etc/resolv.conf
的篡改,重启resolvconf
此时DNS服务仍不正常
阅读DNS的信息,了解到DNS的服务器端口默认为53端口,正好是
EasyConnect
使用iptables
修改过的NAT中包含此项其将访问所有IP的53号端口的UDP包转发到了自己的服务
127.0.0.1:5373
上禁止
EasyConnect
对iptables
的篡改因为无法指定域名服务器的端口,所以重新配置
127.0.0.63/32
的53
端口转发到EasyConnect
的5373
端口,得到一个127.0.0.63
的域名服务器,配置到系统中问题解决
排查工具
- 在文件夹中搜索包含某字段的文件 此命令可以在二进制文件中查找,对于定位篡改
1
grep -rn "sangfor-dns-client" ./
/etc/resolv.conf
的文件的二进制程序十分重要 iptables
相关命令1
2
3
4# 撤销EasyConnect对所有53号端口的转发
iptables -t nat -D OUTPUT -p udp ! --sport 7789 --dport 53 -j DNAT --to-destination 127.0.0.1:5373
# 仅将到127.0.0.63:53的包转发给EasyConnect的服务,得到一个新的DNS服务器127.0.0.63
iptables -t nat -A OUTPUT -p udp ! --sport 7789 -d 127.0.0.63/32 --dport 53 -j DNAT --to-destination 127.0.0.1:5373- 添加新的DNS服务器
1
2
3apt install resolvconf
echo "nameserver 127.0.0.63" >> /etc/resolvconf/resolv.conf.d/head
service resolvconf restart - 手动使用DNS解析域名,验证域名服务器可用
1
nslookup oa1.buaa.edu.cn 127.0.0.63
致谢
2021.06.23 感谢Marlon Fan同学的询问和咖啡,迭代了博客内容,使其更容易理解,顺便追加当时的处理记录
禁止EasyConnect更改
/etc/resolv.conf
- 更改
/usr/share/sangfor/EasyConnect/resources/bin/svpnservice
文件中的/etc/resolv.conf
为其他文件注意保持字数不变例如变成ecfuck
- 更改
更改NAT设置,从原来的所有ip地址的53端口都转发到5373端口,为指定目的地址才转发
1
2
3
4# 撤销EasyConnect对所有53号端口的转发
iptables -t nat -D OUTPUT -p udp ! --sport 7789 --dport 53 -j DNAT --to-destination 127.0.0.1:5373
# 仅将到127.0.0.63:53的包转发给EasyConnect的服务,得到一个新的DNS服务器127.0.0.63
iptables -t nat -A OUTPUT -p udp ! --sport 7789 -d 127.0.0.63/32 --dport 53 -j DNAT --to-destination 127.0.0.1:5373由此我们得到了一个
127.0.0.63
的域名服务器添加EasyConnect的域名服务器到系统的域名服务器中
1
2
3apt install resolvconf
echo "nameserver 127.0.0.63" >> /etc/resolvconf/resolv.conf.d/head
service resolvconf restart可以修改
svpnservice
文件的iptables的设置使其配置失效,达到每次重新配置上述功能的目的其他辅助命令记录
1 | # 使用指定的DNS Server查询IP |