• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • iptables“小”問題解決過程,拿出來感慨一下

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    同事讓我做一個簡單的端口映射,以前認為對iptables有所了解,本想很輕松的問題,卻煞費我苦心。草寫了一下這個過程,拿出來與CU的兄弟姐妹們分享討論一下。 這里247代表202.*.*.247----這是公司的代理 服務器 107代表192.168.0.107---公司內網的一臺機器

    同事讓我做一個簡單的端口映射,以前認為對iptables有所了解,本想很輕松的問題,卻煞費我苦心。草寫了一下這個過程,拿出來與CU的兄弟姐妹們分享討論一下。

    這里247代表202.*.*.247 ----這是公司的代理服務器
        107代表192.168.0.107---公司內網的一臺機器,不過是雙網卡,另一網卡是202.*.*.127(由于這個IP有一定要求,所有沒有直接再此IP上配置外網訪問8088,而用247的端口映射。)
        外網61地址表示一個61.*.*.*的公網地址

    這次想嘗試將247:12121映射到內網107:8088上
    按照以往形式在Iptables表里面寫了:
    iptables -t nat -A PREROUTING -d 202.*.*.247 -p tcp -m tcp --dport 12121 -j DNAT --to-destination 

    192.168.0.107:8088
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.107 -p tcp -m tcp --dport 8088 -j SNAT 

    --to-source 202.*.*.247

    本以為這樣完全OK了,可是結果呢,兩句話全都沒有起作用,而且用其他人的機器訪問247:12121也沒有問題,唯獨我的機器有問題,為什么呢?

    是不是107這臺機器有什么問題呢,用192.168.0.1 ping了一下107,沒有問題啊,防火墻權限是開的???

    哦,那就是107上的Iptables作怪了,ssh上107,iptables stop了一下,再試一試,結果?還是一樣,為什么呢?

    看了一遍iptables的腳本,發現這部分-----

    #43 《我的機器》 open
    /sbin/iptables -I FORWARD 1 -s 192.168.0.43 -d any/0 -j ACCEPT
    /sbin/iptables -t nat -I PREROUTING -s 192.168.0.43 -d any/0 -j ACCEPT
    (這是我剛加的一個 MY IP 全放開的命令,只為了能上上MSN)
    首先我把第二句注釋掉了,重啟IPTABLES,沒有什么變化,和以前的結果是一樣的。
    我又注釋掉了第三句,重啟,發現有了變化,用192.168.0.*的機器訪問202.*.*.247:12121,想要的結果出來了,而外網的地

    址仍然不行。這又是為什么呢

    原來結果出現變化的原因出現在這里:

    43 《我得機器》 open這段話在腳本中是放在端口映射那兩句話的后面的,而且都用的參數-I,這樣IPTABLES針對-s 192.168.0.43的規則

    就變成iptables -t nat -I PREROUTING -s 192.168.0.43 -d any/0 -j ACCEPT,也就是說 -j ACCEPT 覆蓋了 -j SNAT,這樣

    的話,結果當然不對了。

    一個問題就這樣解決了,關鍵的問題又應該如何解決呢?

    先接著試:用外網61地址訪問247:12121,同時在107上監控一下tcpdump,發現在107這個IP的網卡上,只有61地址》107的包,

    107為什么沒有回復呢?

    再打開127這個IP的網卡,哦,原來在這,這里是107》61地址。-----此時,,好像明白了一些。

    理解---》61地址訪問247:12121,被DNAT成61地址訪問107:8088而通過107這個IP的網卡進入107這臺機器。107一看是外網

    的一個地址,回復:從107》61地址,由于107這臺機器的網關設置的是127這個IP,那么107》61地址的包就通過網關127出去訪問61的地址了,61地址一看是127來了包,當然不會接受了。所以結果出不來,,原因在此啊。修改網關,改成192。168。0。1再試試,一切OK。 

    回想起來,其實整個過程并不復雜,由于當時急于解決問題,沒有仔細分析整個過程,也沒有注意可愛的tcpdump,弄得是花了時間沒結果,唉,下不為例了。

     段譽 回復于:2005-06-14 00:24:12
    感謝樓主分享經驗,嚴重支持!

     dawei1981 回復于:2005-06-14 16:00:59
    頂!~

     zzzzzjjjjj 回復于:2005-06-15 11:19:29
    其實發表一些自己平時的工作點滴,論壇會很熱鬧的。

     glider126 回復于:2005-06-15 12:15:10
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.107 -p tcp -m tcp --dport 8088 -j SNAT 

    --to-source 202.*.*.247 

    這句好像是多余的吧~~~

     zzzzzjjjjj 回復于:2005-06-15 13:16:06
    呵呵,沒有這句話,身處192.168.0.0/24網段的同志們就無法連接247:12121。

     zzzzzjjjjj 回復于:2005-06-15 13:26:54
    道理是這樣的:

      192的地址訪問247:12121,PREROUTING將包DNAT到192.168.0.107,當107準備回應的時候,一看是192的地址,當然就直接回應過去了,而當192的那個地址收到這個回應的時候,發現自己發給247的請求,怎么107回復了,一概拒收,所以整個請求就不會建立成功,只有通過POSTROUTING去修改這個源地址,才可以讓107的回應回到247。

     zwwzb 回復于:2005-07-13 07:23:15
    學習ing……

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>