终端命令前置即时DNS解析:如何临时伪造DNS执行命令?
临时伪造DNS记录的命令行工具推荐
当然有!这类工具专门用来临时劫持域名解析,只让后续的单个命令生效,完全不用修改系统全局配置,正好匹配你要的“类似设置环境变量”的使用方式。给你推荐几个实用的:
fakedns(你示例里提到的工具):这简直就是为你的需求量身定做的!它能直接在命令前缀指定域名和对应IP,让后面的程序用你设定的解析结果。用法就和你写的差不多,甚至可以简化命令里的IP:fakedns kafka=172.28.128.19 kafkacat -C -b kafka:9092 -t logging_application_access这样
kafkacat会自动把kafka解析成你指定的IP,不用在命令里写死一串数字,更灵活。nss-wrapper:这是个偏底层但兼容性极强的工具,通过替换系统的域名解析库来临时生效。你只需要先写个临时hosts文件,再用环境变量指定它就行:# 先创建临时hosts echo "172.28.128.19 kafka" > /tmp/temp_hosts # 加载nss-wrapper并运行命令 LD_PRELOAD=libnss_wrapper.so NSS_WRAPPER_HOSTS=/tmp/temp_hosts kafkacat -C -b kafka:9092 -t logging_application_access几乎所有依赖系统DNS解析的程序都能被它搞定,适合各种复杂场景。
临时
dnsmasq实例:如果你要一次性伪造多个域名,甚至通配符解析,dnsmasq的临时启动方式就很合适。比如:# 后台启动临时dnsmasq,指定kafka的解析 dnsmasq --no-daemon --address=/kafka/172.28.128.19 --listen-address=127.0.0.1 & # 生成临时resolv.conf,让命令用本地DNS temp_resolv=$(mktemp) echo "nameserver 127.0.0.1" > $temp_resolv # 运行目标命令 RESOLV_CONF=$temp_resolv kafkacat -C -b kafka:9092 -t logging_application_access # 用完清理:杀掉dnsmasq进程,删除临时文件 kill %1 rm $temp_resolv虽然步骤多一点,但能处理更复杂的DNS伪造需求。
这些工具的共同点是仅对当前执行的命令会话临时生效,不会改动系统全局的hosts或DNS配置,用完就恢复原样,非常方便。
内容的提问来源于stack exchange,提问作者Bruno Wego
相关产品推荐
相关产品推荐

