iptables的使用

iptables

        firewall:隔離工具;Packets Filter Firewall;工作于主機或網絡的邊緣,對經由的報文根據預先定義的規則(匹配條件)進行檢測,對于能夠被規則匹配到的報文實行某預定義的處理機制的一條組件;

硬件防火墻:在硬件級別實現部分顧慮功能;另一個部分功能基于軟件實現

         軟件防火墻:應用軟件處理邏輯運行于通用硬件平臺之上的防火墻

                  

         主機防火墻:服務范圍為當前主機

         網絡防火墻:服務范圍為防火墻內的局域網

                  

         iptables/netfilter

                   netfilter:防火墻框架,framework;位于內核空間

                   iptables:命令行工具程序,位于用戶空間,規則管理工具

                  

                   netfilter

                            hooks function鉤子函數

                                     prerouting

                                     input

                                     forward

                                     output

                                     postrouting

                   iptables

                            CHAINS:

                                     PREROUTING

                                     INPUT

                                     OUTPUT

                                     FORWARD

                                     POSTROUTING

                           

                            報文流向

                                     到本機某進程的報文:PREROUTING–>INPUT

                                     由本機轉發的報文:PREROUTING–>FORWARD–>POSTROUTING

                                     由本機的某進程發出報文:OUTPUT–>POSTROUTING

                           

                            tables

                                     filter:過濾,防火墻

                                     natnetwork address transition,網絡地址轉換

                                     mangle:拆解報文,做出修改,并重新封裝

                                     raw:關閉nat表上啟用的鏈接追蹤機制;

                                    

                                     優先級次序(由高而低)

                                               raw–>mangle—>nat—>filter

 1.png

                                              

                                     功能<–>鉤子:

                                               rawPREROUTING,OUTPUT

                                               manglePREROUTING ,INPUT,FORWARD,OUTPUT,POSTROUTING

                                               natPREROUTING,INPUT,OUTPUT,POSTROUTING

                                               filterINOUT,FORWARD,OUTPUT

 2.png

 

 

                            iptables規則的組成部分

                                     匹配條件:

                                               網絡層首部:Source IP,Destination

                                               傳輸層首部:Source portDestination

                                               擴展檢查機制:

                                     處理動作:target

                                               ACCEPT,DROP,REJECT

                           

                   安裝:

                            netfilter:位于內核中的tcp/ip協議棧報文處理框架

                            iPtables

                                     CentOS 5/6iptables命令編寫規則

                                               iptables -t  filter -F

                                               #service iptables save

                                     CentOS 7 firewal,firewall-cmd,firewall-config

                                               systemctl disable firewalld

                                              

                                     程序包:iptables,iptstate

                                    

                   iptables命令

                            規則:根據指定的撇皮條件來嘗試匹配每個流經此處的報文,一旦匹配成功,則由規則后面指定的處理動作進行處理;

                                     匹配條件:

                                               基本匹配條件:源地址,目標地址,傳輸層協議

                                               擴展匹配條件:需要借助于擴展模塊進行指定的匹配條件

                                                        隱式擴展:已經在基本匹配條件中指明的協議相關的擴展

                                                        顯示擴展:隱式擴展之外的其他擴展匹配條件

                                                                

                                     處理動作:

                                               基本動作:ACCEPT,DROP,…

                                               擴展動作:需要借助于擴展模塊進行,但無需顯示指定,僅需指明動作

                                                       

                            添加規則時需要考量的問題:

                                     1)報文流經的位置:用于判斷將規則添加至那個鏈

                                     2)實現的功能:用于判斷將規則添加至那個表

                                     3)報文的方向:用于判斷那個為“源”,那個為”目標“

                                     4)匹配條件:用于編寫能夠正確匹配目標報文的規則;

                                              

                            iptables命令的使用格式:

                                     iptables [-t table] {-A|-C|-D} chain rule-specification

 

                                     iptables [-t table] -I chain [rulenum] rule-specification

 

                                     iptables [-t table] -R chain rulenum rule-specification

 

                                     iptables [-t table] -D chain rulenum

 

                                     iptables [-t table] -S [chain [rulenum]]

 

                                     iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options…]

 

                                     iptables [-t table] -N chain

 

                                     iptables [-t table] -X [chain]

 

                                     iptables [-t table] -P chain target

 

                                     iptables [-t table] -E old-chain-name new-chain-name

 

                                               rule-specification = [matches…] [target]

 

                                               match = -m matchname [per-match-options]

                                               target = -j targetname [per-target-options]

                           

                    規則管理:iptable[-t able] COMMAND chain cretieria [-m -m matchname [per-match-options]] [j targetname] [per-target-options]]

                              

                               -t table:指定要管理的表,默認為filter

                              

         COMMANDS:

                   鏈管理:

                   -Piptables[-t table] -P chain target,定義鏈的默認策略;其target一般可使用ACCEPTDROP;

3.png

 

 

 

                   -Niptables [-t table] -N chain,自定義規則鏈,僅在默認鏈,僅在默認鏈通過某規則進行吊用方可生效,因此,每個自定義鏈都有其引用記數;

4.png

此時鏈a沒有被引用所以0 references

 

 

                   -Xiptables [-t table] -X [chain],刪除自定義的空的引用記數為0的鏈

5.png

 

                   -Fiptables  [-t chain [rulenum] [options]清空指定的鏈,或刪除指定鏈上的規則;


                   -Eiptables [-t table] -E old-chain-name new-chain-name:重命令自定義的引用記數為0的鏈

 6.png

                   -Z iptables [-t table] -Z [chain [rulenum]] [options…] 置零指定鏈中的所有計數器

                                                       

                   -Aappend,iptables [-t table] -A chain rule-specification ,追加規則到指定的鏈尾部

 

                   -Iinsert,iptables [-t table] -I chain [rulenum] rule-specification,插入規則到指定的鏈中的指定位置,默認為鏈首

                   -Ddelete,iptables [-t table] -D chain rule-specification    iptables [-t table] -D chain rulenum  刪除指定的鏈上的指定規則

                   -Rreplace,iptables [-t table] -R chain rule-specification 將指定的鏈上的指定規則替換為新的規則

                                              

                                    

  查看:

        -Llist,iptables [-t table] -L [chain [rulenum]][options]

                       -n:數字格式

                       -vverbose,詳細格式信息,

                       -vv, -vvv 以更詳細的信息顯示

                       –line-number:顯示鏈上的規則的編號

                       -xexactly,顯示計數器的精確值

   7.png                                   

                                    

                   計數器:

                            每條規則以及鏈的默認策略分別有各自的兩個計數器;

                                     1)匹配到的報文的個數:pkts

                                     2)匹配到的所有報文的大小之和,bytes

                                                       

        

                                                       

                   iptables [-t able] COMMAND chain cretieria [-m -m matchname [per-match-options]]  [-j targetname [per-target-options]]

                   匹配條件:

                            基本匹配條件

                            擴展匹配條件

                                     隱式擴展

                                     顯示擴展

                                    

                   注意:多重條件之間的隱含邏輯為“與”操作;

                                    

         基本匹配條件

         [!] -s, –source address[/mask][,…]檢查報文中的源IP地址是否符合此處指定的地址或地址范圍

         [!]-d,–destination address[/mask]:檢查報文中的目標IP地址是否符合此處指定的地址或地址范圍

         [!] -p, –protocol protocol:檢查報文中傳輸層的協議類型,支持tcp,udp,duplite,icmp,icmpv6,esp,ah,sctp,mh,或者“all

[!] -i, –in-interface 

                   name:檢查報文即將離開本機時經由的接口是否符合本處指定的接口:FORWARD,OUTPUT, and POSTROUTING

 [!] -o, –out-interface name:檢查報文即將離開本機時經由的接口是否符合本處指定的接口;FORWARD, OUTPUT and POSTROUTING;                                 

         -m,–match match:顯示致命要使用的擴展模塊

         -j,–jump target:跳轉目標

                                              

                                              

         擴展匹配條件:

                   隱式擴展:不用-m選項明確給出要使用的擴展機制的擴展,此處主要使用-p{tcp|udp|icmp}給定-p tcp { udp|tcp|icmp}給定協議后可直接對給定的協議所進行的擴展

                   -p tcp:可直接使用tcp協議對應的擴展選項

                   [!] –source-port –sport

                   port[:port]:匹配報文中的傳輸層的源端口;可給出多個連接的端口;

                   [!] –tcp-flags mask compSYN,ACK,FIN,RST,URG,PSH;

                            SYN,ACK,FIN,RST,URG,PSH

                            mask:要檢查中標志位列表,以逗號分隔,例如SYN,FIN,RST

                            compmask給定的眾標志位中,其值必須為1的標志位列表,余下的必須為0

                       –tcp-flags SYN,ACK,FIN,RST SYN

                            [!] –syn:相當于–tcp-flags SYN,ACK,FIN,RST SYN

                            -p udp:可直接使用udp協議對應的擴展選項:

                            [!] –source-port,–sport port[:port]:匹配報文中的傳輸層的源端口;可給出多個連接的端口;

                            iptable –A INPUT –d 10.1.48.21 –p tcp  –source

                            [!] –destination-port,–dport port[:port]:匹配報文中的傳輸層的目標端口;可給出多個連接的端口;

                                                       

                            -p icmp:可直接使用icmp協議對應的擴展選項;

                            [!] –icmp-type {type[/code]|typename}

                            –icmp-type  0/0:匹配對ping請求的響應報文

                            –icmp-type 8/0:匹配ping請求報文

     9.png                                                           

 

                                    

 

顯式擴展:必須使用-m選項給出matchname的擴展,而且有些擴展都還存在專用選項;

                                    

         1、multiport以離散或連續的方式定義的多端口匹配條件; Up to 15 ports can be specified.

                                                 

         [!] –source-ports,–sports port[,port|,port:port]…:指定多個源端口;

         [!] –destination-ports,–dports port[,port|,port:port]…:指定多個目標端口;

         [!] –ports port[,port|,port:port]…:匹配此處指定的源或目標端口;

                                                       

示例:

  iptables –A INPUT –d 10.1.48.21 –p tcp –m multiport –sports  21:23,80,138 –j ACCEPT

  iptables –A INPUT –s 10.1.48.21 –p tcp –m multiport –dports  21:23,80,138 –j ACCEPT

 

         2、iprange以連續的ip地址范圍指明多地址匹配條件               [!] –src-range from[-to]

                    [!] –dst-range from[-to]

示例:

         iptables –A INPUT –d 10.1.48 –p tcp –dport 80 –m iprange –src-range 10.1.1.1-10.1.255.255 –j ACCEPT

iptables –A OUTPUT –s 10.1.48 –p tcp –sport 80 –m iprange –dst-range 10.1.1.1-10.1.255.255 –j ACCEPT

                                              

3、string對報文中的應用層數據做字符串匹配檢測

                    [!] –string pattern

                    [!] –hex-string pattern

                    –algo {bm|kmp}:字符串匹配檢查算法;

                    –from offset  偏移量

                    –to offset 取多少個字符

示例:

                  iptables -I INPUT 1 -p tcp –dport 80 -m string –string "cmd.exe" –algo bm -j DROP

                  iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string –algo kmp –string "cmd.exe"

                  iptables -I INPUT 1 -p tcp –dport 80 -m string –string "domain.com" –algo kmp -j DROP

                                                       

4、time根據報文到達的時間與指定的時間范圍進行匹配度檢測

                   –datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]  2016-1

                   –datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

                   –timestart hh:mm[:ss]

                   –timestop hh:mm[:ss]

             [!] –monthdays day[,day…] 某月中的某天

             [!] –weekdays day[,day…]  一個星期中的某一天

示例:

iptables –A INPUT –d 10.1.48.21 –p tcp –dport 80 –m time –timestart 09:00:00 –timestop 17:00:00 –j ACCEPT

iptables –A INPUT –d 10.1.48.21 –p tcp –dport 80 –m time –datastart 2016-10-20 11:44:00 –datestop 2016-10-21 11:40:00–j ACCEPT

 

5、connlimit根據每客戶端IP做并發連接數限制,即限制單IP可同時發起連接請求

        

–connlimit-upto n:連接數小于等于閾值;

                  –connlimit-above n:連接數超出閾值;

示例:

                  iptables -I INPUT -d 10.1.0.6 -p tcp –dport 22 -m connlimit –connlimit-above 2 -j REJECT

                                                       

6、limit基于收發報文的速率進行匹配

                                                                                                                        

                  –limit rate[/second|/minute|/hour|/day]  限制速率

                  –limit-burst number   限制數量

示例:

                  iptables -A INPUT -d 10.1.0.6 -p icmp –icmp-type 8 -m limit –limit-burst 3 –limit 20/minute -j ACCEPT

                                                         

7、state          狀態檢測:連接追蹤機制(conntrack

 

                                                                                                               

                   NEW:新連接

                   ESTABLISHED:已建立的連接

                   RELATED:相關聯的連接

                   INVALID:無法識別的連接

                   UNTRACKED:未被追蹤連接;

                   MASQUERADE 地址偽裝

                   SNAT:源地址轉換

                   DNAT:目標地址轉換

                   MARK:防火墻標記

                                                       

                   相關的內核模塊:

                            nf_conntrack

                            nf_conntrack_ipv4

                            nf_conntrack_ftp

                                                                

                   追蹤到的連接:/proc/net/nf_conntrack文件中;

                                                                

                   能追蹤的最大連接數量定義在:/proc/sys/net/nf_conntrack_max建議調整至足夠大;

                                                                          

                  不同的協議的連接追蹤時長:/proc/sys/net/netfilter/

 

                                                                                              

                   [!] –state state

                                                       

                   如何開放被動模式的ftp服務:

                            (1) 裝載追蹤ftp協議的模塊;

                                     # modprobe nf_conntrack_ftp

                                                                          

                             (2) 放行入站命令連接

                                     # iptables -A INPUT -d SERVER_IP -p tcp –dport 21 -m state –state NEW,ESTABLISHED -j ACCEPT

                                                                          

                             (3) 放行入站數據連接

                                     # iptables -A INPUT -d SERVER_IP -p tcp -m state –state RELATED,ESTABLISHED -j ACCEPT

                                                                          

                             (4) 放行出站的ESTABLISHED連接

                                     # iptabls -A OUTPUT -s SERVER_IP -m state –state ESTABLISHED -j ACCEPT

                                                                          

                   處理動作(跳轉目標):

                            -j tagetname [per-target-options]

                                     簡單target

                                               ACCEPT,DROP

                                              

                                     擴展target

                                               REJECT

                                                        –reject-with type

                icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited, or icmp-admin-prohibited,默認為icmp-port-unreachable;

                                               LOG

                                                        Turn  on  kernel  logging of matching packets.

                                                       

                                                        –log-level level 日志級別

                                                        –log-prefix prefix:日志信息的前導信息;

                                                       

                                                       

         保存和載入規則:

                   保存:iptables-save > /PATH/TO/SOME_RULE_FILE

                   重載:iptables-restore < /PATH/FROM/SOME_RULE_FILE

                            -n, –noflush:不清除原有規則

                            -t, –test:僅分析生成規則集,但不予提交;

                           

                            注意:重載文件中的規則,會清除已有規則;

                           

                   CentOS 6

                            保存規則:service  iptables  save

                                     保存規則于/etc/sysconfig/iptables,保存操作會清除文件中原有的內容;

                            重載規則:server iptables restart

                                     默認重載/etc/sysconfig/iptables文件中的規則

                                    

                            腳本配置文件:/etc/sysconfig/iptables-config

                                     用于指明要裝載的模塊;

                                    

                   CentOS 7開機自動生效規則:

                            (1) firewalld服務;

                            (2) shell腳本,直接記錄iptables命令;

                            (3) 自定義unit fileinit script;

                           

         規則優化的思路:

                   (1) 優先放行雙方向狀態為ESTABLISHED的報文;

                   (2) 服務于不同類別的功能的規則,匹配到報文可能性更大的放前面;

                   (3) 服務于同一類別的功能的規則,匹配條件較為嚴格的放前面;

                   (4) 設置默認策略:白名單機制

                            (a) 可使用iptables -P設定默認策略;

                            (b) 建議在規則鏈的最后定義規則做為默認策略;

                           

        

幫助文檔:http://ipset.netfilter.org/iptables-extensions.man.html

 

        #安裝所需要的服務#[root@server1 ~]# yum -y  install telnet ftp ssh httpd samba

            -A INPUT -d 10.1.48.21/32 -p tcp -m tcp  22 –dport  -m connlimit connlimit-above 3  -j ACCEPT

            -A OUTPUT -s 10.1.48.21/32 -p tcp -m tcp –sport 22 -j ACCEPT

            -A OUTPUT -s 10.1.48.21/32 -p tcp -m tcp –sport 80 -j ACCEPT

            -A INPUT -d 10.1.48.21/32 -p tcp -m tcp –dport 80 -j ACCEPT

            -A INPUT -d 10.1.48.21/32 -p icmp -m icmp –icmp-type 8   -m limit –limit 1/minute –limit-burst 20  -j ACCEPT

            -A OUTPUT -s 10.1.48.21/32 -p icmp -m icmp –icmp-type 0 -j ACCEPT

            -A INPUT -s 10.1.48.21/32 -p icmp -m icmp –icmp-type 8 -j ACCEPT

            -A INPUT -d 10.1.48.21/32 -p icmp -m icmp –icmp-type 0 -j ACCEPT

      -A INPUT -d 10.1.48.21/32 -p tcp -m tcp –dport 23 –m time –timestart 09:00:00 –timestop 17:00:00 ! –weekend Sat,Sun -j ACCEPT

            -A OUTPUT -s 10.1.48.21/32 -p tcp -m tcp –sport 23 -j ACCEPT

            -A INPUT -d 10.1.48.21/32 -p udp -m multiport –dports 137,138 -j ACCEPT

            -A OUTPUT -s 10.1.48.21/32 -p tcp -m multiport –sports 137,138 -j ACCEPT

            -A INPUT -d 10.1.48.21/32 -p tcp -m multiport –dports 139,445 -j ACCEPT

            -A OUTPUT -s 10.1.48.21/32 -p tcp -m multiport –sports 139,445 -j ACCEPT

 

 

改進后

            iptables –A INPUT –d 10.1.48.21 –p icmp –icmp-type 8  -m limit –limit 1/minute –limit-burst 20 –m state NEW –j ACCEPT

            iptables  -A INPUT –d 10.1.48.21  -m state –state RELATED,ESTABLISHED –j ACCEPT

            iptables –A INPUT –d 10.1.48.21 –p tcp –dport 22 –m connlimit –limit-above 3 –m state –state NEW –j REJECT

      iptabels -A INPUT -d 10.1.48.21/32 -p tcp -m tcp –dport 23 –m time –timestart 09:00:00 –timestop 17:00:00 ! –weekend Sat,Sun  -m state –state NEW -j ACCEPT

      iptables -A INPUT -d 10.1.48.21 -p icmp –icmp-type  8 -m limit –limit 1/minute –limit-burst 20  -m state –state NEW-j ACCEPT

           iptables –A INPUT –d 10.1.48.21 –p tcp –m multiport –dpots 21,,80,139,445 –m state –state NEW –j ACCEPT

           iptables –A INPUT d 10.1.48.21 –p udp –m multiport –dports 137,138 –m  state –state NEW –j ACCEPT

 

           iptables –A OUTPUT –s 10.1.48.21 –m state ESTABLISHED,RELATED  -j ACCEPT

 

   注意:在防火墻開放ftp時需要加載nf_conntrack_ftp nf_nat_ftp

 

 

 

 

iptables 網絡防火墻

 10.png

 

A網卡地址是192.168.1.101

B網卡地址是192.168.1.100

C網卡地址是10.1.48.21

D網卡地址是10.1.48.23

A、 B網卡使用vmne1連接模式,C、D使用的是橋接模式

 

理解下面的集中概念

橋接:虛擬主機使用橋接模式接到軟橋上去了,使用物理網卡出去和其他主機通信

僅主機:虛擬主機之間使用僅主機模式僅能與虛擬主機和物理主機的虛擬網卡之間通信

vmnet1,:只能虛擬主機之間能通信

四臺虛擬機A、B網卡使用的是虛擬網絡vmnet2  C,D網卡使用的是橋接

 

 

 

如果四臺主機需要通信,中間網絡防火墻主機需要打開ip_forward功能,現在將防火墻的FORWARD鏈規則設置為DROP,當內網客戶端訪問外網機器的http服務時就會被拒絕

iptables –A FORWARD  –j DROP

D機器提供了http服務現在內網用戶需要訪問外網主機的服務則需要對方問的服務開防火墻進行轉發,此操作一律在防火墻那臺主機上做

iptables –I FORWARD –s 192.168.1.0/24 –p tcp –dport 80 –j ACCEPT

此時服務還是不能訪問,只有去的響應沒有回的響應,所以還需要開放規則

iptabales –I FORWARD –d 192.168.1.0/24 –p tcp –sport 80 –j ACCEPT

 11.png

12.png 

 

現在開放ssh連接,以及smb服務,并優化策略

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

iptables –I FORWARD 2 –s 192.168.1.0/24 –p tcp –-m multiport –dports 21:23,80,139,445  –m state NEW –j ACCEPT

iptables –A FORWARD –j DROP

允許內網主機訪問外網主機的ftp服務器時,網絡防火墻主機還需要添加nf_conntrack_ftp模塊和nf_nat_ftp模塊,隨后進行訪問

 

 

 

 

如果是外網主機訪問內網主機的服務則只需要添加策略即可

 

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

iptables –I FORWARD 2 –d 192.168.1.0/24 –p tcp –-m multiport –dports 21:23,80,139,445 –m state NEW –j ACCEPT

iptables –A FORWARD –j DROP

 

 

 

 

 

SNAT基于源地址轉換,在中間那臺主機添加策略

iptables –t nat  -A PORTROUTING –s 192.168.1.0/24  -j SNAT  –to-source 10.1.48.21

 

從內網主機ping外網主機測試

在做了源地址轉換之后從內網主機192.168.1.101ping外網主機10.1.48.23,結果是由網關主機10.1.48.21發出的請求,這就應征了,在內網主機向外網主機發送ping請求,在網關出去的時候將源地址轉換成了網關主機的ip地址了

在外網主機上抓包查看tcpdump –I eth0 –nn icmp

13.png

 

 

在網關主機的內網網卡上抓包查看,結果是由內網主機給外網主機發送的ping請求,這就說明在內網主機進過PREROUTING時,源地址是沒有經過轉換的

14.png

 

 

隨后在網關的外網網卡抓包查看,結果是由網關的地址想外網主機發送請求,這點就證明了在源地址轉換是在POSTROUTING上做的地址轉換

 15.png

 

 

 

 

 

 

 

在做一個測試,從內網主機訪問外網主機的http服務之后查看外網主機的http訪問日志

16.png

 

 

DNAT

假設內網主機上啟動了http服務,現在用外網主機訪問網關,返回的信息是內網主機所提供的信息,這時需要做目標地址轉換,將外網 主機訪問網關主機的ip地址轉換為內網主機地址

在網關主機添加如下規則

iptables     -t nat –A PREROUTING  -d 10.1.48.21 –j DNAT  –to-destination 192.168.1.101

 

 

從外網主機ping網關你主機抓包查看

17.png

 

在官網主機的外網接口抓包查看,說明在外網主機10.1.48.23ping網關時目標地址還沒有發

發生改變

 18.png

 

 

在網關的內網網卡上抓包查看,這是的目標地址已經變成了內網主機的地址,這時候說明已經完成了目標地址轉換,從外網的主機10.1.48.23ping 10.1.48.21,最終外網ping的目標地址發生了改變,已經從10..48.21變成了192.168.1.101

 

最后在內網主機網卡上抓包查看,發現發送請求的源地址是外網主機地址

19.png

 

 

 

測試外網主機訪問內網主機的http服務查看日志

外網主機對網關主機發送http請求,但最終的結果是由內網主機192.168.1.101返回的資源,這也能說明目標地址發生了轉換,由外網主機請求10.1.48.21,最終目標地址變成了192.168.1.101

20.png

 

 

嘗試將網關的主機開啟htpd服務器,從外網主機請求訪問網關主機的http服務器,但最終的返回的結果還是由內網主機提供的服務

iptables –t nat PREROUTING –d 10.1.48.21 –p tcp –dport 80 –j DNAT –to-destination 192.168.1.101

 

 

nat表上添加了策略之后當外網主機訪問10.1.48.21網關主機時,網關主機將外網主機請求的目標地址轉換為內網主機的地址192.168.1.101,最后返回的資源是內網主機資源,最終實現了目標地址轉換

 

 

 

 

自定義鏈:

目的實現外網主機訪問內網主機資源

 

iptables –N web_in 

 

FORWARD鏈上添加默認拒絕規則

iptable –A FORWARD –j DROP

想要是FORWARD鏈和自定義鏈結合工作,那么需要在自定義鏈上放行規則

iptable –A web_in –d 10.1.48.21 –p tcp –dport 80 –m stae –state NEW –j  ACCEPT

當之后狀態是ESTABLISHED時,直接就開放某些主機訪問,所以還需要在FORWARD鏈上加一條狀態放行規則

iptable –I FORWARD  –m state –state ESTABLIEHS –j ACCEPT

 

規則寫到這里嘗試用外網主機訪問內網主機,最終的結果還是無法訪問,因為第一訪問時的狀態是NEW,ESTABLISHED狀態是匹配不到的,所以都會交由默認拒絕規則所匹配,只有引用了自定義鏈上的規則后才允許外網主機訪問內網主機資源,鏈接方法如下:

iptables –I FORWARD 2 –d 192.168.1.0/24  -J web_in

 

當有請求到達時將會應用自定義鏈上的規則,第一次鏈接屬于NEW狀態,放行此次請求,而自定義鏈的規則又被引用到了FORWARD鏈上,這是外網主機才能夠與內網主機進行通信獲取資源

 

 

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

(0)
fszxxxksfszxxxks
上一篇 2016-10-29
下一篇 2016-10-29

相關推薦

  • jobs簡介

    jobs簡介     jobs可以顯示當前shell 環境中已啟動的作業狀態。     用linux的時候經常會碰到類似這種情形,復制,下載一個很大的文件或編輯一個文件,任務占據著界面不能做其他操作,這個時候想不暫?;蛑兄谷蝿杖プ鰟e的操作就可以將正在執行的命令送往后臺去運行。 作業:作業號     …

    Linux干貨 2015-05-23
  • shell腳本編程基礎練習

    這周,我們學習了shell腳本基礎,那么什么是shell腳本呢? shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在里面,然后用正則表達式,管道命令以及重定向向等功能,以達到我們所想要的處理目的。Shell腳本可以幫助我們系統、自動化的去管理和處理一些東西 下面是摘抄出的幾個練習: 首先,…

    2017-08-05
  • 第八周作業

    1. 寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主機使用紅色顯示; #!/bin/bash # for i in {1..254};do         pi…

    Linux干貨 2017-02-24
  • Linux文件類型以及顏色標識

    1、Linux文件類型介紹   Linux系統不同于window系統,兩者文件類型也有很大的差異。Linux文件類型和Linux文件的文件名所代表的意義是兩個不同的概念。我們通過一般應用程序而創建的比如file.txt、file.tar.gz,這些文件雖然要用不同的程序來打開,但放在Linux文件類型中衡量的話,大多是常規文件(也被稱為普…

    Linux干貨 2016-10-17
  • 105-MHA

    一.MHA簡介 1.1.簡介         MHA(Master HA ) 是一款開源的 MySQL高可用程序,它為MYSQL 主從復制架構提供了automating master failover 主節點自動遷移功能.MHA在監控到master節點故障時候,會自動提升擁有的數據最近進于主節點的其他從節點為主節點,

    2016-11-27
  • 海量數據處理算法—Bit-Map

    1. Bit Map算法簡介         來自于《編程珠璣》。所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由于采用了Bit為單位來存儲數據,因此在存儲空間方面,可以大大節省。 2、 Bit Map的基本思想       &nbs…

    Linux干貨 2015-11-10
欧美性久久久久