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

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

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

    不急不徐,持之以恒。

    http://blog.gopersist.com/

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      24 隨筆 :: 0 文章 :: 52 評論 :: 0 Trackbacks

    為了搞清楚iptables NAT的過程,做了這個實驗。使用了1臺雙網卡服務器和1臺單網卡服務器,2個網段。服務器信息如下:


    IP配置信息如下:

    服務器

    操作系統

    網卡

    IP

    調度服務器

    Centos

    eth0

    192.168.18.58

    eth1

    192.168.2.90

    實際服務器

    Centos

    eth0

    192.168.2.73

     

    1.       為了看到調度服務器上的數據轉發過程,首先在調度服務器上分出內核的debug日志:

    /etc/rsyslog.conf最后增加:kern.debug /var/log/iptables.log

    重啟日志服務:/etc/init.d/rsyslog restart

     

    2.       啟動調度服務器的iptables并清空規則

    service iptables start

    iptables -F

     

    3.       增加調度服務器的iptables特定日志輸出

    假設要將對調度服務器8888端口的訪問轉發給實際服務器的9999端口處理,在iptables中增加與這2個端口相關的日志輸出:

    iptables -t mangle -A PREROUTING -p tcp --dport 8888 -j LOG --log-level debug --log-prefix "<<<<< PER IN:"

    iptables -t mangle -A PREROUTING -p tcp --sport 9999 -j LOG --log-level debug --log-prefix "<<<<< PER IN:"

    iptables -t mangle -A POSTROUTING -p tcp --sport 8888 -j LOG --log-level debug --log-prefix ">>>>> POST OUT:"

    iptables -t mangle -A POSTROUTING -p tcp --dport 9999 -j LOG --log-level debug --log-prefix ">>>>> POST OUT:"

    iptables -t mangle -A POSTROUTING -p tcp --sport 9999 -j LOG --log-level debug --log-prefix ">>>>> POST OUT:"

     

    這時,通過瀏覽器訪問http://192.168.18.58:8888可以看到iptables.log中打印出下面的日志:

    Apr 24 16:24:35 route-server1 kernel: <<<<< PER IN:IN=eth0 OUT= MAC=00:1f:c6:cb:eb:e0:00:1f:33:de:29:ad:08:00 SRC=192.168.18.25 DST=192.168.18.58 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=28721 DF PROTO=TCP SPT=50270 DPT=8888 WINDOW=14600 RES=0x00 SYN URGP=0

    Apr 24 16:24:35 route-server1 kernel: <<<<< POST OUT:IN= OUT=eth0 SRC=192.168.18.58 DST=192.168.18.25 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=8888 DPT=50270 WINDOW=0 RES=0x00 ACK RST URGP=0

     

    雖然這個端口上即沒有應用,也沒有將請求轉發出去,但日志打印出了內核獲取到的對這個端口的請求。

     

    4.       配置iptables將對8888的請求轉發到192.168.2.73:9999

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8888 -j DNAT --to-destination 192.168.2.73:9999

     

    訪問http://192.168.18.58:8888,日志中打印如下信息:

    Apr 24 16:39:21 route-server1 kernel: <<<<< PER IN:IN=eth0 OUT= MAC=00:1f:c6:cb:eb:e0:00:1f:33:de:29:ad:08:00 SRC=192.168.18.25 DST=192.168.18.58 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=56888 DF PROTO=TCP SPT=50274 DPT=8888 WINDOW=14600 RES=0x00 SYN URGP=0

     

    日志中只打印了從eth0收到的對8888端口的請求,這是因為當數據要被轉發到192.168.2.73:9999時,默認情況下被禁止了。

     

    5.       打開數據包轉發功能

    echo 1 > /proc/sys/net/ipv4/ip_forward

     

    訪問http://192.168.18.58:8888,日志中打印如下信息:

    Apr 24 16:39:21 route-server1 kernel: <<<<< PER IN:IN=eth0 OUT= MAC=00:1f:c6:cb:eb:e0:00:1f:33:de:29:ad:08:00 SRC=192.168.18.25 DST=192.168.18.58 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=56888 DF PROTO=TCP SPT=50274 DPT=8888 WINDOW=14600 RES=0x00 SYN URGP=0

    Apr 24 16:39:21 route-server1 kernel: <<<<< POST OUT:IN= OUT=eth1 SRC=192.168.18.25 DST=192.168.2.73 LEN=60 TOS=0x00 PREC=0x00 TTL=62 ID=56888 DF PROTO=TCP SPT=50274 DPT=9999 WINDOW=14600 RES=0x00 SYN URGP=0

     

    第一條日志顯示從eth0收到了對8888端口的請求,第二條日志顯示iptables已經更改了數據包的目的地為192.168.2.73:9999,并通過eth1發出去。

     

    但這時請求雖然已經被轉發到實際處理的服務器,但調度服務器收不到響應,瀏覽器仍在不停重試,日志也在不斷打印。這是因為實際服務器收到的數據包的來源IP是另一個網段的,實際服務器回復時,發現不是本網段的就把數據包發給網關,網關設置的是192.168.2.1,這時數據就丟了。

     

    6.       將實際服務器的默認網關設置為192.168.2.90

    在實際服務器上執行以下命令:

    route del default

    route add default gw 192.168.2.90

     

    再次訪問http://192.168.18.58:8888,日志打印如下信息:

    Apr 24 16:47:27 route-server1 kernel: <<<<< PER IN:IN=eth0 OUT= MAC=00:1f:c6:cb:eb:e0:00:1f:33:de:29:ad:08:00 SRC=192.168.18.25 DST=192.168.18.58 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=37000 DF PROTO=TCP SPT=50279 DPT=8888 WINDOW=14600 RES=0x00 SYN URGP=0

    Apr 24 16:47:27 route-server1 kernel: <<<<< POST OUT:IN= OUT=eth1 SRC=192.168.18.25 DST=192.168.2.73 LEN=60 TOS=0x00 PREC=0x00 TTL=62 ID=37000 DF PROTO=TCP SPT=50279 DPT=9999 WINDOW=14600 RES=0x00 SYN URGP=0

    Apr 24 16:47:27 route-server1 kernel: <<<<< PER IN:IN=eth1 OUT= MAC=00:22:b0:de:f7:49:00:24:8c:b4:a1:8c:08:00 SRC=192.168.2.73 DST=192.168.18.25 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=9999 DPT=50279 WINDOW=0 RES=0x00 ACK RST URGP=0

    Apr 24 16:47:27 route-server1 kernel: <<<<< POST OUT:IN= OUT=eth0 SRC=192.168.2.73 DST=192.168.18.25 LEN=40 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=9999 DPT=50279 WINDOW=0 RES=0x00 ACK RST URGP=0

     

    上面第一條第二條日志和之前一樣,iptables將目地址更改后,通過eth1網卡發送出去。第三條日志通過eth1網卡接收到了實際服務器發送過來的數據,并在第四條日志中通過eth0發回請求方。

     

    posted on 2014-04-24 17:15 老林 閱讀(3996) 評論(0)  編輯  收藏 所屬分類: Linux

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 77777亚洲午夜久久多人| 亚洲国产精品成人一区| 久热中文字幕在线精品免费| 在线观看亚洲精品国产| 国产97视频人人做人人爱免费| 亚洲福利视频一区二区| 色屁屁在线观看视频免费| 亚洲AV无码成人精品区大在线| 深夜特黄a级毛片免费播放| 在线看片免费人成视频播| 中文亚洲AV片在线观看不卡| 大妹子影视剧在线观看全集免费| 7x7x7x免费在线观看| 亚洲国产精品一区二区第四页 | 亚洲一卡2卡3卡4卡5卡6卡| 欧洲乱码伦视频免费国产| 国产精品亚洲高清一区二区| 中文无码日韩欧免费视频| 久久精品7亚洲午夜a| 亚洲乱码中文字幕在线| 免费日韩在线视频| 又粗又长又爽又长黄免费视频| 美女被免费喷白浆视频| 亚洲综合精品一二三区在线| 午夜国产精品免费观看| 亚洲av成人一区二区三区观看在线| 亚洲高清无码综合性爱视频| 免费无码又爽又刺激高潮软件| 亚洲黄色在线电影| 国产精品无码素人福利免费| 亚洲最新中文字幕| 99视频在线观看免费| 亚洲综合久久1区2区3区 | 国产精品日本亚洲777| 久久久久噜噜噜亚洲熟女综合| 无码囯产精品一区二区免费 | 国产老女人精品免费视频| 久久国产精品免费一区| 亚洲精品和日本精品| 毛片无码免费无码播放| 亚洲av乱码一区二区三区按摩|