iptables filter表案例
iptables filter 表案例
創(chuàng)建一個(gè)iptables.sh腳本
[root@hch ~]# vim /usr/local/sbin/iptables.sh
寫入腳本內(nèi)容:
ipt="/usr/sbin/iptables"http://定義一個(gè)環(huán)境變量(下面$ipt就等同于
/usr/sbin/iptables的絕對路徑了)
$ipt -F//清空之前規(guī)則(沒有-t,默認(rèn)是執(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ù)包放行)
完成腳本后保存退出,接著運(yùn)行這個(gè)腳本;
[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
恢復(fù)默認(rèn)規(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不通本機(jī),但是本機(jī)可以ping通外網(wǎng)
刪除這條規(guī)則命令如下;
[root@hch ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP
iptables nat表應(yīng)用
在日常生活中接觸到的路由器,它的功能就是分享上網(wǎng),本來一根網(wǎng)線過來(其實(shí)只有一個(gè)公網(wǎng)IP),通過路由器后,路由器分配一個(gè)網(wǎng)段(私網(wǎng)IP),這樣連接路由器的多臺PC或者手機(jī)等設(shè)備都能連接上網(wǎng)了,而遠(yuǎn)端的設(shè)備認(rèn)為你的IP就是那個(gè)連接路由器的公網(wǎng)IP。這個(gè)路由器的功能其實(shí)就是由linux的iptables實(shí)現(xiàn)的,而iptables又是通過nat表作用而實(shí)現(xiàn)的。
以下舉個(gè)例子說明,假設(shè)你的兩臺機(jī)器,A機(jī)器有兩塊網(wǎng)卡ens33和ens37,其中ens33的IP為10.2.33.71,ens37的IP為192.168.100.1,ens33網(wǎng)卡連接了因特網(wǎng),但ens37沒有連接?,F(xiàn)在B機(jī)器有個(gè)的ens37網(wǎng)卡和A機(jī)器的ens37是互通的,如何設(shè)置才能讓連接ens33的A機(jī)器連接因特網(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
在此之前如果使用的是虛擬機(jī)演戲的話,需要預(yù)備幾步工作;
先對A機(jī)器進(jìn)行操作設(shè)置,添加網(wǎng)卡
編輯虛擬機(jī)設(shè)置——選中:網(wǎng)絡(luò)適配器——添加:網(wǎng)絡(luò)適配器——點(diǎn)擊:下一步——保持默認(rèn):NAT模式——點(diǎn)擊: 完成—— 選中:網(wǎng)絡(luò)適配器 2——選擇:LAN 區(qū)段——添加:自定義名稱——確定——選中剛剛添加的新LAN段 ——確定




這里A機(jī)器就設(shè)置好了,B機(jī)器和A機(jī)器設(shè)置操作一樣,只是需要先把原本B機(jī)器上可以連接的網(wǎng)卡斷掉禁用掉,已方便操作,禁掉操作如下;

這里記住A、B機(jī)器選擇的LAN區(qū)段一定要一致。
[root@hch ~]#?
接下來ifconfig查給A、B機(jī)器新網(wǎng)卡同時(shí)設(shè)置臨時(shí)IP;
[root@hch ~]#? ifconfig ens37 10.2.33.81/23
[root@hch ~]#? ifconfig ens37 10.2.33.85/24
B機(jī)器為了更好的演示操作,可以ifdown掉ens33網(wǎng)卡
[root@hch ~]#? ifdown ens33
這樣準(zhǔn)備工作就做好了,可以用ping命令檢測以下A、B機(jī)器是否能相互ping通內(nèi)網(wǎng)和外網(wǎng),如果以上操作正確的話,得到的結(jié)果是A機(jī)器能ping通外網(wǎng)和內(nèi)網(wǎng),而B機(jī)器只能ping通內(nèi)網(wǎng)。
接下來就是讓A機(jī)器的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 //默認(rèn)是0端口關(guān)閉,1則是打開
1
[root@hch ~]#? iptables -t nat -nvL
再來給B機(jī)器設(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機(jī)器技能ping通A機(jī)器也能ping通外網(wǎng)了,比如你ping一個(gè)A機(jī)器可以連接外網(wǎng)IP的地址或則ping百度或者騰訊的地址
遠(yuǎn)程訪問B機(jī)器
刪掉A機(jī)器之前設(shè)定的nat表的規(guī)則;
[root@hch ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
重新設(shè)定一個(gè)nat表的規(guī)則(針對進(jìn)去的數(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è)定一個(gè)nat表的規(guī)則(針對回來的數(shù)據(jù)包)
[root@hch ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 10.2.33.71
給B機(jī)器設(shè)置網(wǎng)關(guān);
[root@hch ~]# route add default gw 192.168.100.1
最后在Xshell設(shè)置一個(gè)遠(yuǎn)程登錄到IP地址為192.168.135.133端口為1122的服務(wù)器即可。