Linux IPTABLES端口轉發


  之前在Linux上用普通用戶部署了一個Tomcat,然后將其server.xml中的端口配置為80端口,用普通用戶運行就提示綁定端口失敗(permission denied),google了一下,原來是Linux下,1024端口以下的,普通用戶是無法使用的,只能通過Root用戶來使用,這就造成一個問題,瀏覽器默認請求的端口是80,所以不需要用戶在瀏覽器地址欄的地址后面加入端口,要是你自己的tomcat是8080端口,為了能正常訪問,用戶就不得不在地址后面添加上8080,這樣就不行了,有什么方法可以解決這件事么?

  用Linux的iptables來進行端口的轉發,首先粗略來了解一下ipatbels:

  iptables是Linux系統上的IP 信息包過濾系統,你就把它看成一個防火牆,可以對進出的數據包進行過濾。

  iptabels以供有四張表和五條鏈:

    4個表:filter,nat,mangle,raw,默認表是filter(沒有指定表的時候就是filter表)。表的處理優先級:raw>mangle>nat>filter。

      filter:一般的過濾功能

      nat:用於nat功能(端口映射,地址映射等)

      mangle:用於對特定數據包的修改

          raw:有限級最高,設置raw時一般是為了不再讓iptables做數據包的鏈接跟蹤處理,提高性能

    5個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

           PREROUTING:數據包進入路由表之前

           INPUT:通過路由表后目的地為本機

           FORWARDING:通過路由表后,目的地不為本機

           OUTPUT:由本機產生,向外轉發

           POSTROUTIONG:發送到網卡接口之前。

  然后查看iptables中已有的規則:

  iptables -L [-t 表名],如下圖:

  

  然后往nat表中添加一個端口轉發,將80端口轉發到8080端口之上

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080

  -t nat : 指出我要操作什么表.(不寫就表示filter.默認是filter) 
  -A PREROUTING : A 添加的意思.表示我要在PREROUTING 中添加一個規則 
  –dport 80 : 如果請求80端口. 
  –to-port 8080 : 那么就轉到8080端口. 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM