Linux给特定进程单独指定DNS
Linux本身只能通过/etc/resolv.conf设置全系统的DNS。这里有一种给特定进程单独设置DNS的方法,通过免root的mount namespace达成。使用脚本只需要一条简洁的命令就可以。
背景
例如,在各省各地布置了CDN,本地Linux系统用的DNS为114.114.114.114,这里想要使用某地某ISP的DNS5.5.5.5来测试CDN设置状况,却不想更改全系统设置。虽然dig和nslookup可指定DNS,但大部分程序没有这个功能。
方法
Bubblewrap是一个非特权(免root)容器工具,使用
bwrap命令以用它来创建一个mount namespace,使得在此namespace下的进程所看见的/etc/resolv.conf被覆盖为自己指定的内容。有些程序会使用系统统一提供的DNS缓存(一般由nscd提供),因此mount namespace需要阻止DNS缓存被访问。阻止
/var/run/nscd/被访问即可。
使用
移步Github仓库,有我整理好的脚本
proxc -d 5.5.5.5 -c nslookup http://my-website-with-cdn.com
proxc -d 5.5.5.5 -c firefox http://my-website-with-cdn.com
proxc -d 5.5.5.5 -c curl -v http://my-website-with-cdn.com
使用此脚本只需要一条简洁的命令就可以达到。将5.5.5.5分别替换成要测试的各省各ISP的DNS即可。
限制
由于Bubblewrap的限制,若在使用过程中,mount namespace之外的进程删除、重建或更改了/etc/resolv.conf,也会使namespace内所看见的/etc/resolv.conf被修改。
因此,NetworkManager切换网络后,可能会使此方法设置的DNS失效。可以通过禁止NetworkManager更改/etc/resolv.conf来避免。
Linux给特定进程单独指定DNS的更多相关文章
- Linux下设置进程使用指定核的CPU
一.原因: 我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起. 二.查看方法: 1. ...
- Linux下实现脚本监测特定进程占用内存情况
Linux系统下,我们可以利用以下命令来获取特定进程的运行情况: cat /proc/$PID/status 其中PID是具体的进程号,这个命令打印出/proc/特定进程/status文件的内容,信息 ...
- linux日志守护进程 syslog
几乎所有的网络设备都可以通过syslog协议,将日志信息以UDP的形式传送给远端服务器,远端接收日志服务器必须通过syslogd监听UDP端口514,并根据 syslog.conf 配置文件张的配置处 ...
- Kali Linux渗透测试实战 2.1 DNS信息收集
目录 2.1 DNS信息收集1 2.1.1 whois查询3 2.1.2 域名基本信息查询4 Dns服务器查询4 a记录查询4 mx记录查询5 2.1.3 域名枚举5 fierse 5 dnsdict ...
- windows下使用C#获取特定进程网络流量
最近老板接了一个中船重工的项目,需要做一个有关海军软件系统的组件评估项目,项目中有一个子项目需要获取特定进程的各种系统参数,项目使用.NET平台.在获取特定进程各种系统参数时,其它诸如进程ID,进程名 ...
- Linux如何查看进程、杀死进程、启动进程等常用命令
Linux如何查看进程.杀死进程.启动进程等常用命令 关键字: linux 查进程.杀进程.起进程1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括 ...
- Linux 线程与进程,以及通信
http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...
- Linux系统编程@进程通信(一)
进程间通信概述 需要进程通信的原因: 数据传输 资源共享 通知事件 进程控制 Linux进程间通信(IPC)发展由来 Unix进程间通信 基于System V进程间通信(System V:UNIX系统 ...
- Linux下的进程管理
在操作系统系统中,进程是一个非常重要的概念. 一.Linux中进程的相关知识 1.什么是进程呢? 通俗的来说进程是运行起来的程序.唯一标示进程的是进程描述符(PID),在linux内核中是通过task ...
随机推荐
- jzoj 3567. 【GDKOI2014】石油储备计划
Problem Description Input Output 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. Data Constraint 对于20%的数据 ...
- 关于java数组基础练习题
定义一个int[] a ={4,2,0,-1,-8,23,9}求数组元素的最大值.最小值.平均数.总和.数组的复制.反转 //3.定义一个int[] a ={4,2,0,-1,-8,23,9}求数组元 ...
- JS 浏览器BOM
BOM:Browser Object Model 浏览器对象模型 2.组成: window :窗口对象 1.创建: 2.方法: *与弹出框有关 1.alert(); 弹出警告框 2.confirm() ...
- Linux实战(5):Centos8安装python
Centos8正式版已经发布了,已经尝鲜的小伙伴们会发现与其他Linux发行版不同,CentOS 8默认不安装Python.接下来的操作指导大家如何安装python3. 转自链接 安装python3 ...
- openstack共享组件——Memcache 缓存系统(4)
云计算openstack共享组件——Memcache 缓存系统(4) 一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Netw ...
- 10.Atomic-原子性操作
- Elasticsearch(1):基础入门
1 Elasticsearch¶ 在如今数据为王的时代,如何充分高效实现数据检索和分析是数据应用的关键.以电商平台为例,输入一个商品名称,那么就要求系统以最快的速度将所有相关的商品搜索处理.现 ...
- robots检测插件编写
首先先把url分割 url = 'https://www.baidu.com/s?wd=123&rsv_spt=1&rsv_iqid=0x8d22781d000014ad&is ...
- Java8 新特性lambda表达式(一)初始
本篇参考Richard Warburton的 java8 Lambdas :Functional Programming for the Masses 学习lambda表达式之前,需要知道什么是函数式 ...
- burp suite 之 intruder(入侵者)
intruder:包括自动提交请求的功能 登录密码 撞库 注入 脱裤 Fuzz Burp intruder包含四个模块: Target:攻击的网站目标的详情信息 Positions :用来设置攻击类型 ...