<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    DNS代理服務器

    背景接上文:http://www.tkk7.com/stone2083/archive/2011/05/23/350875.html
    隨筆摘自6月13日郵件分享
    目前此軟件在公司測試環境上運行良好,故分享給大家。

    以下為分享內容:

    好處

    1.       一個項目、小需求,需要綁定的Hosts,只需要一份Hosts信息即可。不必每個用戶自行管理各自電腦的Hosts。達到一人配置,多人使用的目的

    2.       綁定的Hosts,支持通配符。方便類似旺鋪域名的需求,只需要配置一個帶通配符的域名即可

    3.       要在不同項目,小需求切換不同的Hosts時,只需要輕輕一點,方便

    4.       要想使用代理服務器,只需要本地DNS設置一下即可,方便

    5.       本機Hosts配置優先

     

    如何使用:(以10.20.131.207環境介紹)備注:公司內部環境,外部無法訪問,如果需要,請自行搭建

    1.       登陸DNS后臺管理頁面URLhttp://10.20.131.207:8000/,點擊Add


    2.       添加一個項目的Hosts信息,點擊添加


    3.       Hosts信息頁面,點擊assign,綁定自己電腦IP和某個Hosts的關聯


    4.       IP List頁面上,顯示了不同IPHosts關聯的信息


    5.       將本機電腦的DNS服務器設置成DNS代理服務器即可(10.20.131.207-- 只需要一次操作即可,以后一直能用

    左圖為windows配置,右圖為linux配置

     

    此時,你訪問域名,如果在2011tp hosts中,則直接返回Hosts中的IP;反之,則返回真實IP。


    如何啟動服務
    1. 啟動DNS代理服務器服務
    1.1 cd dns/dns
    1.2 vi settings.py 修改配置信息
    1.3 python -u main.py

    2. 啟動DNS BackOffice服務
    2.1 cd dns/config
    2.2 vi settings.py 修改配置信息
    2.3 python -u manage.py runserver


    軟件下載:DNS Proxy Server

    ============================================================================================
    為了滿足“邪惡”的人們能更方便的使用這個軟件(貌似邪惡的人特別看重這個軟件通配符的功能,具體邪惡在哪里,我不具體描述了,給個鏈接),我特意寫了一個standalone的版本:
    1. 去除無用的backoffice功能
    2. 去除通過事件機制reload hosts文件的功能
    3. 去除復雜的settings配置文件,改用簡單的命令行方式
    4. 特意為windows用戶制作了一個exe文件,可以直接使用

    linux用戶使用方案:
    python standalone.py -s xxx.xxx.xxx.xxx (上級dns地址)
    python standalone.py -s xxx.xxx.xxx.xxx -f /etc/hosts2 (指定hosts文件,默認是/etc/hosts)

    windows用戶使用方案,進入dist(exe發布目錄)
    dns.exe -s xxx.xxx.xxx.xxx (上級dns地址)
    dns.exe -s xxx.xxx.xxx.xxx -f d:/hosts (指定hosts文件,默認是c:/windows/system32/drivers/etc/hosts)

    對于不放心使用exe的客戶來說,可以進入dns目錄,通過py2exe工具自行發布成exe軟件,方法如下
    python setup.py py2exe

    standalone版本下載

    posted on 2011-07-04 20:39 stone2083 閱讀(9430) 評論(23)  編輯  收藏 所屬分類: python

    Feedback

    # re: DNS代理服務器 2011-07-07 10:11 mj

    增加使用memcache代替讀取配置文件的功能

    vim proxy_dns.py

    import memcache

    mc = self.server.mc

    ip = mc.get(domain)
    #ip = hosts.get_ip(self.client_address[0], domain)


    self.mc = memcache.Client(['127.0.0.1:11211'], debug=0)

    #qq 56185089  回復  更多評論   

    # re: DNS代理服務器 2011-07-07 10:18 Dahai

    因為對程序不是很了解,能否說一下在Windows下具體怎樣安裝使用這個dns服務器  回復  更多評論   

    # re: DNS代理服務器 2011-07-07 11:27 stone2083

    @mj
    挺好的想法。
    目前我們公司并行開發項目量不大,所以理論上特殊化的hosts并不會多得離譜。
    所以在DNS代理服務器端,完全使用了內存cache(Hosts文件內容一次性load到內存中)
    DNS BackOffice為了實現簡單,暫時通過文件的方式保存hosts信息。

    如果要完善這個產品,確實需要考慮一些中間件。相比于memcache,我可能會選擇TT Server(即有底端存儲,又兼容mc協議)  回復  更多評論   

    # re: DNS代理服務器 2011-07-07 11:38 stone2083

    @Dahai
    確實,我還真沒有在windows下做過測試 :(
    理論上,python是跨平臺的,需要做的事情,也差不多
    1. 安裝python
    2. 安裝Django框架
    3. 下載附件,解壓
    4. 進入dns/dns,修改settings.py配置文件,主要是配置hosts存儲路徑和代理服務器ip等信息
    5. 命令提示符下,python main.py
    6.進入dns/config,修改settings .py配置文件,主要是配置hosts存儲路徑和代理服務器通訊地址(一旦修改hosts信息,需要通知給dns代理服務器)
    7.命令提示符下,python manager.py runserver 0.0.0.0:8000

    貌似有工具可以將python程序制作成exe文件。我可以嘗試下。
    你這邊也有類似的需求嗎?  回復  更多評論   

    # re: DNS代理服務器 2011-07-07 20:14 Dahai

    我原以為是非常實用的小軟件,沒想到光配置問題我就解決不了,看來這確實不適合我啊@stone2083
      回復  更多評論   

    # re: DNS代理服務器 2011-07-08 22:08 geyee

    does it support ipv6 通配符 ?  回復  更多評論   

    # re: DNS代理服務器 2011-07-09 19:49 stone2083

    @geyee
    支持通配符,但是沒支持ipv6--目前還沒有這個需求。  回復  更多評論   

    # re: DNS代理服務器 2011-07-15 16:13 Diky

    這個程序很有用,我借助它解決了很多單靠hosts不好解決的「國情」問題(感覺我用在歪道上了…)
    要不要考慮作為開源程序把代碼托管到google code呢?  回復  更多評論   

    # re: DNS代理服務器 2011-07-16 23:03 stone2083

    @Diky
    ^_^,貌似看中通配符功能用于干其他用途的客戶還不少嘛。我特意寫來一個standalone版本的,可以更方便的使用。具體說明我已經補充在正文下方了。
    這個代碼,我本來就是放在googlecode上,地址為:https://stonelab.googlecode.com/svn/trunk/dns
    只是這個東東只是我用業余時間搞出來的實驗版本,還算不上真正的產品,所以還是低調點。  回復  更多評論   

    # re: DNS代理服務器 2011-09-15 15:20 zhouzm

    請問,能不能支持域名排除
    比如 *.abc.com我要指向一個IP,但 yyy.abc.com 和 zzz.abc.com還是交給DNS解析  回復  更多評論   

    # re: DNS代理服務器 2011-09-15 16:01 stone2083

    @zhouzm
    可以做,不過需要自定義Hosts語法,然后修改hosts.py get_ip方法。
    當然最簡單的方式,就是加一份filter列表,filter中的host,直接交給上級DNS。
    可以嘗試自己修改下。

    這個需求雖然合理,但是有違系統Hosts語法,Hosts理念都是正向的,
    1. 系統Hosts語法, equals(host) (相等匹配)
    2. 我擴展了一下,wildcard_match(host) (通配符匹配)
    3. 甚至可以利用正則擴展,pattern_match(host) (正則匹配)  回復  更多評論   

    # re: DNS代理服務器 2011-09-15 16:21 zhouzm

    感謝回復!

    我是個python盲啊,不會改

    既然要保持Hosts的語法,我建議不如把擴展部分獨立出來,使用另外的配置文件保存,這樣在擴展的時候就更靈活,我看了一下類似的DNS緩存軟件,例如Acrylic就是這么做的
      回復  更多評論   

    # re: DNS代理服務器 2011-09-15 20:16 stone2083

    @zhouzm
    如果僅僅是上面描述的需求,那么擴展filter邏輯,也是方便的一個事情。
    只是設計擴展點,本身不是一件輕松的事情。需要對需求進行相對全面的分析。
    就拿你這個需求來說,哪怕獨立了擴展點,保持了Hosts的語法,但是卻改變了Hosts的語意:你需要對Hosts信息做exclude操作。

    所以,如果不歸納需求,那么擴展點非常難設計。甚至于到最后,需要非常復雜的DSL語言來描述。

    python不難,花個2-3個小時,就差不多掌握語法了。如果要簡單實現你的需求。
    1. 配置filter列表
    2. hosts.py 中,加入self.filter_list,get_ip的時候,優先判斷filter_list.
      回復  更多評論   

    # re: DNS代理服務器 2012-02-22 15:37 Jackie

    要是能做成Windows后臺程序開機自動運行就好了……  回復  更多評論   

    # re: DNS代理服務器 2012-02-22 16:41 stone2083

    @Jackie
    用一個bat腳本封裝,放入自啟動目錄下,就能滿足你的需求了。  回復  更多評論   

    # re: DNS代理服務器[未登錄] 2012-07-12 18:28 Lee

    博主!您好!
    您的程序可以改造成這樣子嗎:
    如果匹配則返回相應IP,否則再交給操作系統處理。
    主要是不想指定額外的DNS。
    因為平時網卡的設置都是讓DNS自動獲取的,在不同地方辦公自動獲取到的DNS也可能會不同,指定某些DNS可能在某些地方反而更慢,如果讓這個程序不需要指定上級dns地址會方便好多。
      回復  更多評論   

    # re: DNS代理服務器 2012-07-12 19:47 stone2083

    @Lee
    理論上應該是可行的--就是程序中設法獲取默認的DNS。
    我周末有空的時候去研究下,可以的話,就修改下。  回復  更多評論   

    # re: DNS代理服務器 2012-07-16 10:40 stone2083

    @Lee
    可行性還是用的,就是利用dhcp client獲取默認DNS信息。
    不過開發的成本比較大,寫一份dhcp協議的解析,客戶端;還要測試多網卡下的場景,PPPOE下的測試,等等。
    不知道你的需求緊迫嗎?

    或者可以使用稍微麻煩的辦法:
    1. windows下,使用ipconfig /all
    2. linux下, cat /etc/resolv.conf
    可以查看默認的DNS,之后再修改成我的DNS Proxy地址。  回復  更多評論   

    # re: DNS代理服務器 2012-08-22 17:35 Brilliance

    沒用
    plus.google.com  回復  更多評論   

    # re: DNS代理服務器 2015-04-20 22:57 麥田

    發現了這個幾年前寫的小程序,非常棒,不知道這樣的腳本能不能在安卓上運行,可能想多了……,電腦fq簡單安卓fq太麻煩了,要考慮省電穩定問題,不fq谷歌服務更耗電  回復  更多評論   

    # re: DNS代理服務器 2015-04-22 21:08 stone2083

    @麥田
    比較困難
    如果是為了FQ考慮,可能需要想其他方案.  回復  更多評論   

    # re: DNS代理服務器[未登錄] 2015-08-31 17:42 yang

    127.0.0.1 -- [Mon Aug 31 17:38:50 2015] 129.52.208.203.in-addr.arpa Not Found
    127.0.0.1 -- [Mon Aug 31 17:39:04 2015] 210.93.79.117.in-addr.arpa Not Found
    127.0.0.1 -- [Mon Aug 31 17:39:04 2015] 210.93.79.117.in-addr.arpa Not Found
    127.0.0.1 -- [Mon Aug 31 17:39:13 2015] 210.174.201.101.in-addr.arpa Not Found
    127.0.0.1 -- [Mon Aug 31 17:39:22 2015] 124.213.9.121.in-addr.arpa Not Found
    127.0.0.1 -- [Mon Aug 31 17:39:31 2015] 221.93.79.117.in-addr.arpa Not Found
    127.0.0.1 -- [Mon Aug 31 17:39:40 2015] 194.73.112.114.in-addr.arpa Not Found


    最近不知道怎么了,全都是這樣的,但是又沒什么影響。百度過說是什么反代理,具體也不明白什么意思。  回復  更多評論   

    # re: DNS代理服務器 2015-09-01 12:42 stone2083

    @yang
    這個是反向域名解析查詢.
    不影響正常使用.  回復  更多評論   

    主站蜘蛛池模板: a级毛片免费观看在线| 亚洲av无码成人精品国产| 亚洲精品视频免费| 日产国产精品亚洲系列| 国产亚洲精彩视频| 在线观看免费国产视频| 亚洲AV日韩AV无码污污网站| 女人18毛片a级毛片免费视频| 亚洲人成欧美中文字幕| 四虎影院免费视频| 国产精品亚洲天堂| 亚洲最大av无码网址| 三年在线观看免费观看完整版中文 | 免费久久精品国产片香蕉| 免费在线观看一区| 国产亚洲精久久久久久无码77777| 国产在线观看免费视频软件| 亚洲日韩区在线电影| 中文字幕人成无码免费视频| 亚洲AV日韩综合一区| 久久久久亚洲精品无码网址| 免费人妻无码不卡中文字幕系| 亚洲狠狠狠一区二区三区| 中文字幕人成无码免费视频| 色多多免费视频观看区一区| 国产AV无码专区亚洲AV男同| 嘿嘿嘿视频免费网站在线观看| 亚洲aⅴ无码专区在线观看| 中文字幕亚洲日本岛国片| 69视频在线是免费观看| 亚洲免费网站观看视频| 亚洲五月综合缴情在线观看| 18女人腿打开无遮掩免费| 亚洲JIZZJIZZ妇女| 亚洲国产精品一区二区久久hs| 无码中文在线二区免费| 久久免费视频一区| 亚洲国产精品综合久久20| 亚洲中文字幕丝袜制服一区| 国产高清免费视频| 黄床大片免费30分钟国产精品 |