iptables filter表案例,iptables nat表應用

iptables 用法複習html

 iptables filter表案例

需求:把80端口,21端口放行,22端口指定ip段放行

#!/bin/bash
ipt="/user/sbin/iptables"
$ipt -F  // 清空規則
$ipt -P INPUT DROP //
$ipt -P OUTPUT ACCEPT //
$ipt -P FORWARD ACCEPT //
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT //放行22端口
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT // 放行80端口
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT //

Iptables參數  -m state --state <狀態>linux

Iptables參數

-m state --state <狀態>

有數種狀態,狀態有:

▪ INVALID:無效的封包,例如數據破損的封包狀態

▪ ESTABLISHED:已經聯機成功的聯機狀態;

▪ NEW:想要新創建聯機的封包狀態;

▪ RELATED:這個最經常使用!表示這個封包是與咱們主機發送出去的封包有關, 
多是響應封包或者是聯機成功以後的傳送封包!這個狀態很常被設定,
由於設定了他以後,只要將來由本機發送出去的封包,
即便咱們沒有設定封包的 INPUT 規則,該有關的封包仍是能夠進入咱們主機, 能夠簡化至關多的設定規則。

執行腳本,查看規則已經生效,但爲寫入配置文件,service iptables restart恢復原規則web

icmp 示例:禁掉ping本地,但能夠ping通外網安全

iptables -I INPUT -p icmp --icmp -type 8 -j DROPbash

nat表應用案例

1:讓b機器鏈接外網

先在虛擬機中克隆一個linux系統b網絡

在系統a中添加網卡,默認選項,完成less

添加lan區段,並選擇添加的區段tcp

給系統b也添加一個網卡,選擇上一步添加的區段,同時取消鏈接b的第一個網卡網站

啓動a系統spa

設置新添加網卡ip

ifconfig ens37 192.168.99.1/24 // ip隨意指定

啓動b系統也設置網卡ip,要和a的網卡在一個網段

ifconfig ens37 192.168.99.99/24 // ip隨意指定

 a系統ping b系統,成功聯通。

[root@glinux-01 ~]# ping 192.168.99.99
PING 192.168.99.99 (192.168.99.99) 56(84) bytes of data.
64 bytes from 192.168.99.99: icmp_seq=1 ttl=64 time=0.831 ms
64 bytes from 192.168.99.99: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 192.168.99.99: icmp_seq=3 ttl=64 time=1.80 ms

 

a機器打開路由轉發

運行 echo "1"> /proc/sys/net/ipv4/ip_forward

出於安全考慮,Linux系統默認是禁止數據包轉發的。所謂轉發即當主機擁有多於一塊的網卡時,
其中一塊收到數據包,根據數據包的目的ip地址將包發往本機另外一網卡,該網卡根據路由表繼續發送數據包。
這一般就是路由器所要實現的功能。
配置Linux系統的ip轉發功能,首先保證硬件連通,而後打開系統的轉發功能
less /proc/sys/net/ipv4/ip_forward,該文件內容爲0,表示禁止數據包轉發,1表示容許,將其修改成1。

a機器添加規則

iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o ens33 -j MASQUERADE
讓192.168.99.0這個網段能夠上網  MASQUERADE,地址假裝

b機器設置網關

route -n 查看網關

route add default gw 192.168.99.1(a機器的ip)

ifdown ens33 關掉ens33網卡

b機器ping a機器ens33的網卡,成功

修改b機器dns

vi /etc/resolv.conf

ping通dns

2 c機器只能和a通訊,讓c機器能夠連通b機器22端口

  • a機器打開路由轉發

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

  • a機器設置規則

iptables -t nat -A PREROUTING -d 192.168.244.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 (將ip x.244.128:1122目的網絡地址轉換 x.192.168.100.100:22)

iptables -t nat -A POSTROUTING -s 192.168.99.99 -j SNAT --to 192.168.244.128

(源網絡地址192.168.99.99轉換成192.168.244.128)

  • b上設置網關192.168.99.1

 nat dnat snat分別是什麼?

http://ask.apelearn.com/question/7255

https://zhidao.baidu.com/question/335463920.html 

NAT(Network Address Translation,網絡地址轉換)是將IP 數據包頭中的IP 地址轉換爲另外一個IP 地址的過程。在實際應用中,NAT 主要用於實現私有網絡訪問公共網絡的功能。這種經過使用少許的公有IP 地址表明較多的私有IP 地址的方式,將有助於減緩可用IP地址空間的枯竭
DNAT Destination Network Address Translation 目的網絡地址轉換,
SNAT Source Network Address Translation 源網絡地址轉換,其做用是將ip數據包的源地址轉換成另一個地址,可能有人以爲奇怪,好好的爲何要進行ip地址轉換啊,爲了弄懂這個問題,咱們要看一下局域網用戶上公網的原理,假設內網主機A(192.168.2.8)要和外網主機B(61.132.62.131)通訊,A向B發出IP數據包,若是沒有SNAT對A主機進行源地址轉換,A與B主機的通信會不正常中斷,由於當路由器將內網的數據包發到公網IP後,公網IP會給你的私網IP回數據包,這時,公網IP根本就沒法知道你的私網IP應該如何走了。因此問它上一級路由器,固然這是確定的,由於從公網上根本就沒法看到私網IP,所以你沒法給他通訊。爲了實現數據包的正確發送及返回,網關必須將A的址轉換爲一個合法的公網地址,同時爲了之後B主機能將數據包發送給A,這個合法的公網地址必須是網關的外網地址,若是是其它公網地址的話,B會把數據包發送到其它網關,而不是A主機所在的網關,A將收不到B發過來的數據包,因此內網主機要上公網就必需要有合法的公網地址,而獲得這個地址的方法就是讓網關進行SNAT(源地址轉換),將內網地址轉換成公網址(通常是網關的外部地址),因此你們常常會看到爲了讓內網用戶上公網,咱們必須在routeros的firewall中設置snat,俗稱IP地址欺騙或假裝(masquerade)
區分SNAT和DNAT
從定義來說它們一個是源地址轉換,一個是目標地址轉換。都是地址轉換的功能,將私有地址轉換爲公網地址。
要區分這兩個功能能夠簡單的由鏈接發起者是誰來區分:
內部地址要訪問公網上的服務時(如web訪問),內部地址會主動發起鏈接,由路由器或者防火牆上的網關對內部地址作個地址轉換,將內部地址的私有IP轉換爲公網的公有IP,網關的這個地址轉換稱爲SNAT,主要用於內部共享IP訪問外部。
當內部須要提供對外服務時(如對外發布web網站),外部地址發起主動鏈接,由路由器或者防火牆上的網關接收這個鏈接,而後將鏈接轉換到內部,此過程是由帶有公網IP的網關替代內部服務來接收外部的鏈接,而後在內部作地址轉換,此轉換稱爲DNAT,主要用於內部服務對外發布。
在配置防火牆或者路由acl策略時要注意這兩個NAT必定不能混淆。
相關文章
相關標籤/搜索