10.15 iptables filter表小案例
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
(清控规则)
$ipt -P INPUT DROP
(INPUT策略DROP掉)
$ipt -P OUTPUT ACCEPT
(OUTPUT策略可接受)
$ipt -P FORWARD ACCEPT
(FORWARD策略可接受)
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(增加规则:-m state 指定状态,--state 状态为RELATED,ESTABLISHED,不加RELATED可能导致其他通信被禁,-j 操作为接受 )
$ipt -A INPUT -s 192.168.65.0/24 -p tcp --dport 22 -j ACCEPT
(增加规则:网段为192.168.65.0/24,端口为22的数据包放行)
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
(80端口数据包放行)
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
(21端口数据包放行)
·实际操作:
[[email protected] ~]# sh /usr/local/sbin/iptables.sh [[email protected] ~]# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 28 1848 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT tcp -- * * 192.168.65.0/24 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 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 15 packets, 1412 bytes) pkts bytes target prot opt in out source destination [[email protected] ~]# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 32 2112 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT tcp -- * * 192.168.65.0/24 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 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 18 packets, 2568 bytes) pkts bytes target prot opt in out source destination [[email protected] ~]# service iptables restart Redirecting to /bin/systemctl restart iptables.service [[email protected] ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 10 660 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 6 packets, 792 bytes) pkts bytes target prot opt in out source destination
·icmp示例:
禁掉icmp:
[[email protected] ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
10.16 iptables nat表应用(上)
需求:
A:两块网卡,一块可以上外网,一块用内网
B:只有一块内网网卡
让B机器可以连外网
准备工作:
准备两个虚拟机
给两台虚拟机做快照
给A机器添加网卡:
设置LAN区段,等效于设置连接的交换机(名称可以任取)
同样方式给B机器添加网卡,并把B机器原先网卡给禁用
LAN区段选择和A机器一样的,意味着,此时A机器的第二块网卡和B机器的第二块网卡已经连在同一个交换机上
进入A机器,可以开到新增的网卡,名称为ens37
给新网卡设置新ip(ifconfig ens37 192.168.100.1/24,此ip重启后消失,新建网卡配置文件重启后ip不变)
同样的方法,设置B机器的网卡(因为B机器网卡没有配置,所以无法远程连接,只能在虚拟机上操作)
如上图,两台机器已经可以连通。
准备工作已经完成。
10.17 iptables nat表应用(中)
windows主机无法ping同两台虚拟机所添加的网卡
B机器也无法联网
在A机器上打开端口转发echo "1" > /proc/sys/ipv4/ip_forward(0为关闭,1为打开)
A机器上增加一条规则iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B机器设置网卡192.168.100.1,数据包从B到A通路
B机器已经可以连A机器第一块网卡
然后编辑公共DNS
vi /etc/resolve.conf
但是ping不通DNS 119.29.29.29
查了写资料和其他人的处理方法,把iptables规则重新添加一次,再返回B机器就能连通了
能ping通DNS也就是说可以连接外网了
可以连外网,但是依然连不了内网
这就是一个路由器的路由器,A机器就是路由器
10.18 iptables nat表应用(下)
需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口(远程登录B)
虽然无法连接192.168.100.100,但是可以连接A机器192.168.65.128,可以做一个跳转到B机器192.168.100.100
把A机器192.168.65.128的某端口(我们设置为1122),映射为B机器上192.168.100.100的22端口
第一步:打开端口转发echo "1" > /proc/sys/net/ipv4/ip_forward
第二步:删除iptables规则
第三步:增加iptables规则
iptables -t nat -A PREROUTING -d 192.168.65.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.65.128
参考:http://man.linuxde.net/iptables
http://blog.chinaunix.net/uid-26495963-id-3279216.html
原文地址:http://blog.51cto.com/11530642/2065154