iptables filter表案例
iptables filter 表案例
創(chuàng)建一個iptables.sh腳本
[root@hch ~]# vim /usr/local/sbin/iptables.sh
寫入腳本內(nèi)容:
ipt="/usr/sbin/iptables"http://定義一個環(huán)境變量(下面$ipt就等同于
/usr/sbin/iptables的絕對路徑了)
$ipt -F//清空之前規(guī)則(沒有-t锥债,默認是執(zhí)行的filter)
$ipt -P INPUT DROP//定義策略 (INPUT策略 DROP掉)
$ipt -P OUTPUT ACCEPT//定義策略(OUTPUT策略 ACCEPT接受)
$ipt -P FORWARD ACCEPT// 定義策略(FORWARD策略 ACCEPT接受)
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT//增加規(guī)則(RELATED狀態(tài),ESTABLISHED狀態(tài)放行)
$ipt -A INPUT -s192.168.135.0/24-p tcp --dport22-j ACCEPT//增加規(guī)則(192.168.223網(wǎng)段訪問22端口的數(shù)據(jù)包放行)
$ipt -A INPUT -p tcp --dport80-j ACCEPT//增加規(guī)則(80端口數(shù)據(jù)包方行)
$ipt -A INPUT -p tcp --dport21-j ACCEPT//增加規(guī)則(21端口數(shù)據(jù)包放行)
完成腳本后保存退出提茁,接著運行這個腳本;
[root@hch ~]# sh /usr/local/sbin/iptables.sh
最后再來查看以下規(guī)則肤粱;
[root@hch ~]# iptables -nvL
Chain INPUT (policy DROP 31 packets, 5272 bytes)
pkts bytes target? ? prot opt in? ? out? ? source? ? ? ? ? ? ? destination? ? ? ?
? ? 6? 448 ACCEPT? ? all? --? *? ? ? *? ? ? 0.0.0.0/0? ? ? ? ? ? 0.0.0.0/0? ? ? ? ? ? state RELATED,ESTABLISHED
? ? 0? ? 0 ACCEPT? ? tcp? --? *? ? ? *? ? ? 10.2.32.0/23? ? ? ? 0.0.0.0/0? ? ? ? ? ? tcp dpt:22
? ? 0? ? 0 ACCEPT? ? tcp? --? *? ? ? *? ? ? 0.0.0.0/0? ? ? ? ? ? 0.0.0.0/0? ? ? ? ? ? tcp dpt:80
? ? 0? ? 0 ACCEPT? ? tcp? --? *? ? ? *? ? ? 0.0.0.0/0? ? ? ? ? ? 0.0.0.0/0? ? ? ? ? ? tcp dpt:21
恢復默認規(guī)則;
[root@hch ~]# service iptables restart
關(guān)于icmp的包比較常見的應(yīng)用悼沿,執(zhí)行以下命令鳞芙;
[root@hch ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
這條命令會禁止別人ping不通本機,但是本機可以ping通外網(wǎng)
刪除這條規(guī)則命令如下卫玖;
[root@hch ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP
iptables nat表應(yīng)用
在日常生活中接觸到的路由器公你,它的功能就是分享上網(wǎng),本來一根網(wǎng)線過來(其實只有一個公網(wǎng)IP)假瞬,通過路由器后陕靠,路由器分配一個網(wǎng)段(私網(wǎng)IP),這樣連接路由器的多臺PC或者手機等設(shè)備都能連接上網(wǎng)了脱茉,而遠端的設(shè)備認為你的IP就是那個連接路由器的公網(wǎng)IP剪芥。這個路由器的功能其實就是由linux的iptables實現(xiàn)的,而iptables又是通過nat表作用而實現(xiàn)的琴许。
以下舉個例子說明税肪,假設(shè)你的兩臺機器,A機器有兩塊網(wǎng)卡ens33和ens37榜田,其中ens33的IP為10.2.33.71益兄,ens37的IP為192.168.100.1,ens33網(wǎng)卡連接了因特網(wǎng)箭券,但ens37沒有連接【煌保現(xiàn)在B機器有個的ens37網(wǎng)卡和A機器的ens37是互通的,如何設(shè)置才能讓連接ens33的A機器連接因特網(wǎng)邦鲫,和110.2.33.71互通呢灸叼,操作如下;
[root@hch ~]#?echo "1" > /proc/sys/net/ipv4/ip_forward
[root@hch ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
在此之前如果使用的是虛擬機演戲的話庆捺,需要預備幾步工作古今;
先對A機器進行操作設(shè)置,添加網(wǎng)卡
編輯虛擬機設(shè)置——選中:網(wǎng)絡(luò)適配器——添加:網(wǎng)絡(luò)適配器——點擊:下一步——保持默認:NAT模式——點擊: 完成—— 選中:網(wǎng)絡(luò)適配器 2——選擇:LAN 區(qū)段——添加:自定義名稱——確定——選中剛剛添加的新LAN段 ——確定
這里A機器就設(shè)置好了滔以,B機器和A機器設(shè)置操作一樣捉腥,只是需要先把原本B機器上可以連接的網(wǎng)卡斷掉禁用掉,已方便操作你画,禁掉操作如下抵碟;
這里記住A桃漾、B機器選擇的LAN區(qū)段一定要一致。
[root@hch ~]#?
接下來ifconfig查給A拟逮、B機器新網(wǎng)卡同時設(shè)置臨時IP撬统;
[root@hch ~]#? ifconfig ens37 10.2.33.81/23
[root@hch ~]#? ifconfig ens37 10.2.33.85/24
B機器為了更好的演示操作,可以ifdown掉ens33網(wǎng)卡
[root@hch ~]#? ifdown ens33
這樣準備工作就做好了敦迄,可以用ping命令檢測以下A恋追、B機器是否能相互ping通內(nèi)網(wǎng)和外網(wǎng),如果以上操作正確的話罚屋,得到的結(jié)果是A機器能ping通外網(wǎng)和內(nèi)網(wǎng)苦囱,而B機器只能ping通內(nèi)網(wǎng)。
接下來就是讓A機器的ens37設(shè)置的能夠連接外網(wǎng)
[root@hch ~]#? echo "1" > /proc/sys/net/ipv4/ip_forward //打開端口轉(zhuǎn)發(fā)?
[root@hch ~]#? iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE //增加規(guī)則
我們可以執(zhí)行以下命令查看設(shè)置結(jié)果
[root@hch ~]#? cat /proc/sys/net/ipv4/ip_forward //默認是0端口關(guān)閉脾猛,1則是打開
1
[root@hch ~]#? iptables -t nat -nvL
再來給B機器設(shè)置網(wǎng)關(guān)以及修改DNS撕彤;
[root@hch ~]# route add default gw 192.168.100.1
[root@hch ~]# vi /etc/resolv.conf
寫入公共DNS:119.29.29.29保存并退出
這樣B機器技能ping通A機器也能ping通外網(wǎng)了,比如你ping一個A機器可以連接外網(wǎng)IP的地址或則ping百度或者騰訊的地址
遠程訪問B機器
刪掉A機器之前設(shè)定的nat表的規(guī)則猛拴;
[root@hch ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
重新設(shè)定一個nat表的規(guī)則(針對進去的數(shù)據(jù)包)
[root@hch ~]# iptables -t nat -A PREROUTING -d 10.2.33.71 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
在設(shè)定一個nat表的規(guī)則(針對回來的數(shù)據(jù)包)
[root@hch ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 10.2.33.71
給B機器設(shè)置網(wǎng)關(guān)羹铅;
[root@hch ~]# route add default gw 192.168.100.1
最后在Xshell設(shè)置一個遠程登錄到IP地址為192.168.135.133端口為1122的服務(wù)器即可。