iptables/netfilter網絡防火墻:

iptables/netfilter網絡防火墻:


FORWORD鏈上的防火墻規則

iptables/netfilter網絡防火墻:

路由功能打開
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

網關設置防火墻,讓內網可以訪問外網網頁

iptables -A FORWARD -s 192.168.126.131 -p tcp --dport 80 -j ACCEPT

iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -j DROP

也可以用笨辦法

iptables -A FORWARD -s 192.168.126.131 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -j DROP
iptables -I FORWARD 2 -d 192.168.126.0/24 -p tcp --sport 80 -j ACCEPT

不過第一種方法可以實現多條端口的訪問

iptables -R FORWARD 2 -s 192.168.126.131 -p tcp -m multiport --dport 80,22,23,21,139,445 -m state --state NEW -j -ACCEPT

modprobe nf_conntrack_ftp (有了此條命令就能使用ftp的RELATED了)

iptables -I FORWARD  -m state --state ESTABLISHED,RELATED -j ACCEPT

所以添加規則于FORWARD鏈,注意幾個問題:

1) 請求和響應報文均會經由FORWARD鏈,要注意規則的方向性;分清誰是請求誰是相應 
建議:第一條:iptables -I FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

(2) 如果可以啟用conntrack機制,注意網關主機所能夠追蹤的連接數的最大數量要符合需要

NAT:

  • 源地址轉換:SNAT,POSTROUTING
      靜態轉換:外網地址是固定的
      動態轉換:外網地址時不固定的,需要臨時探測地址后再轉換
      地址池地址轉換! 
    
  • 目標地址轉換:DNAT,PREROUTING

  • PAT:端口轉換 (端口映射)Port Address Translation

SNAT:源地址轉換,主要用于請求時隱藏主機

目標地址不變,重新改寫源地址,并在本機建立NAT表項,當數據返回時,在剛收到報文的時候就要根據NAT表將目的地址數據改寫為數據發送出去時候的源地址(要不就會發送到INPUT了),并發送給主機

目前大多都是解決內網用戶用同一個公網地址上網的情況

–to-source [ipaddr[-ipaddr]]

注意:【系統在路由及過慮等處理直到數據包要被送出時才進行SNAT】
(有一種SNAT的特殊情況是ip欺騙,也就是所謂的Masquerading,通常建議在使用撥號上網的時候使用,或者說在合法ip地址不固定的情況下使用)

-j SNAT --to-source IP[-IP][:端口-端口](nat 表的 POSTROUTING鏈)

 源地址轉換,SNAT 支持轉換為單 IP,也支持轉換到 IP 地址池
 (一組連續的 IP 地址)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \
 -j SNAT --to 1.1.1.1
將內網 192.168.0.0/24 的原地址修改為 1.1.1.1,用于 NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 \
 -j SNAT --to 1.1.1.1-1.1.1.10
同上,只不過修改成一個地址池里的 IP

iptables/netfilter網絡防火墻:

1、默認情況
iptables/netfilter網絡防火墻:

iptables/netfilter網絡防火墻:
2、網關主機(源端口轉換)

 ~]# iptables -t nat -A POSTROUTING -s 192.168.22.0/24(內網段) -j SNAT --to-source 10.1.6.68(路由的外網ip)

iptables/netfilter網絡防火墻:

iptables/netfilter網絡防火墻:

這時會發現 目標主機自動轉換ip到請求主機

MASQUERADE:地址偽裝,這種用于不知道地址時做轉換使用,如果知道地址最好不要用,會消耗大量系統資源
        This target is only valid in the nat table, in the POSTROUTING chain.  It  should  only  be  used  with  dynamically assigned  IP (dialup) connections: if you have a static IP address, you should use the SNAT target. 

DNAT:用于被請求時隱藏主機

和SNAT相反,源地址不變,重新修改目標地址,在本機建立NAT表項,當數據返回時,根據NAT表將源地址修改為數據發送過來時的目標地址,并發給遠程主機

在DNAT的基礎上,可以根據請求數據包的端口做PNAT(端口轉換,也稱為端口映射),可以更句請求數據包不同的端口改寫不同的目標地址,從而發送給不同的主機

這在用一個公網地址做不同服務時用的比較多,而且相對來說,用NAT的方式可以隱藏后端服務器的真實地址,更加的安全         

–to-destination [ipaddr[-ipaddr]][:port[-port]]

REDIRECT:本機短端口映射
    This  target  is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains. 

        --to-ports port[-port]

    RETURN:返回 

iptables/netfilter網絡防火墻:

iptables/netfilter網絡防火墻:
~]# iptables -t nat -A PREROUTING -d 10.1.6.68 -p tcp –dport 80 -j DNAT –to-destination 192.168.126.131:80

ss -tnl 可以看到哪臺主機訪問哪個端口
注意:改22號端口時 本地轉發主機會被隱藏,最好改的時候把ssh端口給換一下也可以



iptables -t nat -A PREROUTING -d 10.1.6.68 -p tcp --dport 22022 -j DNAT --to-destination 192.168.126.131:22

這樣就不用改本地主機的22端口了,改那個內網主機的端口隱藏成其他的做法

如果本機監聽的端口是8080,但外部不識別這個端口只識別80端口解決方法

做本機的端口映射(NAT表),把剛到達本機的請求(PREROUTING)給改映射端口!

iptables -t nat -A PREROUTING -d 192.168.126.130(本機端口) -p tcp –dport 80 -j REDIRECT –to-port 8080

自定義鏈:如果沒被匹配到默認就會返回調用鏈,不過還是建議加上返回 -j RETURN

iptables -N web_in

iptables -A web_in -d 192.168.126.0/24 -p tcp –dport 80 -j ACCEPT

雖然這樣加上了但是不會被引用
還要在默認鏈上加上引用

iptables -I FORWARD 2 -d 192.168.126.0/24 -p –dport 80 -j web_in

這樣就會把來自192.168.126.0/24網絡上的主機的轉發請求跳轉到 web_in這條鏈上去了

原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/54725

(0)
qzxqzx
上一篇 2016-10-26
下一篇 2016-10-26

相關推薦

  • 描述計算機的組成及其功能

    CPU:計算器,控制器,寄存器內存輸入輸出設備

    Linux干貨 2016-08-15
  • 網絡N22期+第一周作業

    一.計算機的組成及功能     計算機組成:         運算器           功能:對數據進行各種運算   &nbsp…

    Linux干貨 2016-08-15
  • N25-第四周

    復制/etc/ske1目錄為/home/tuser1,要求/home/tuser及其內部文件的屬組和其他用戶均沒有任何訪問權限。 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1[root@localhost ~]# ll -d /home/tuser1/drwxr-xr-x. 2 root root 59 …

    Linux干貨 2016-12-25
  • CIDR,子網掩碼以及劃分子網超網

    對于中小企業,假如有兩千臺機器,給他分個B類地址,6萬多個,太浪費了,分個C類地址,一個C類地址254個,又不夠,又得多申請幾個,所以A,B,C類IP地址劃分太過僵硬,很不靈活,因此又提出無類域間路(CIDR)由劃分IP地址的方法。 無類域間路由(CIDR) 傳統劃分IP地址的方法都是8位劃分的,要不就是前8位網絡ID,后24位主機ID;或前16位網絡ID,…

    2017-09-16
  • 馬哥教育網絡班21期-第九周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash m=0 n=0 for i in `awk -F: '{print $NF}'&nb…

    Linux干貨 2016-09-15
  • httpd功能配置之CGI程序

        httpd服務中有一個cgi-bin目錄,此目錄專門用于存放cgi腳本。CGI即網關通用接口,用于實現動態網頁。下面簡單編寫一個CGI腳本來進行測試此功能:     1、在/var/www/cgi-bin/目錄下創建一個腳本     2、重啟服務     3、驗證 &nb…

    Linux干貨 2016-03-11
欧美性久久久久