WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

EasyConnect 造成系统DNS不完整的问题排查

问题描述

  • EasyConnect在Linux服务器中运行时,DNS无法解析baidu等原有网址

排查过程

  • 确认是DNS解析问题,不是网络连接受限问题,通过pingIP地址反馈正常,看出网络没有受限,因此直接解决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

  • 禁止EasyConnectiptables的篡改

  • 因为无法指定域名服务器的端口,所以重新配置127.0.0.63/3253端口转发到EasyConnect5373端口,得到一个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
    3
    apt 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
    3
    apt install resolvconf
    echo "nameserver 127.0.0.63" >> /etc/resolvconf/resolv.conf.d/head
    service resolvconf restart

    可以修改svpnservice文件的iptables的设置使其配置失效,达到每次重新配置上述功能的目的

  • 其他辅助命令记录

1
2
# 使用指定的DNS Server查询IP
nslookup oa1.buaa.edu.cn 127.0.0.53