iptables
基本信息及操作
Iptable
-t ##
指定表名称
-n ##
不做解析
-L ##
列出指定表中的策略
-F ##
刷掉表中的策略,当
-t
没指定表时默认
filter
-A ##
增加策略
-i ##
进入网卡
-p ##
网络协议
--dport ##
端口
-s ##
数据来源
-j ##
动作
ACCEPT ##
允许
REJECT ##
拒绝
-N ##
增加链
-E ##
修改名称
-X ##
删除指定链
-D ##
删除指定策略
-I ##
插入
-R ##
修改策略
-P ##
修改默认策略
[root@desktop57 ~]# systemctl start iptables
[root@desktop57 ~]# iptables -t filter -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 stateRELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 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
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-withicmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@desktop57 ~]# iptables -F
[root@desktop57 ~]# iptable -F
bash: iptable: command not found...
[root@desktop4 ~]# iptables -t filter -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@desktop57 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@desktop57~]# iptables -t filter -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@desktop57 ~]# iptables -A INPUT -i lo -j ACCEPT ##允许lo
[root@desktop57 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##允许访问22端口
[root@desktop57 ~]# iptables -A INPUT -s 172.25.254.57 -j ACCEPT ##允许250主机访问本机所有端口
[root@desktop57 ~]# iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源
[root@localhost ~]# iptables -N redhat ##增加链redhat
[root@localhost ~]# iptables -E redhat westos ##修改链名称
[root@localhost ~]# iptables -X westos ##删除westos链
[root@localhost ~]# iptables -D INPUT 2 ##删除INPUT链中第二条策略
[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j REJECT ##插入策略到INPUT链中第一条
[root@localhost ~]# iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略
[root@localhost ~]# iptables -P INPUTDROP ##把INPUT链中的默认策略修改为drop
数据包的状态
包的状态依据IP所包含的协议不同而不同,但在内核外部,也就是用户空间里,
只有4种状态:NEW,ESTABLISHED,RELATED 和INVALID。它们主要是和状态匹配一起使用。以便匹配数据包。这可以使我们的防火墙非常强壮和有效
-mstate --state<NEW,ESTATBLISHED,INVALID,RELATED> ##指定匹配哪种状态
– INVALID:无效的封包,例如数据破损的封包状态,该包不匹配于任何连接,通常这些包被DROP
–ESTABLISHED:已经联机成功的联机状态;该包属于某个已经建立的连接。
–NEW:想要新建立联机的封包状态;该包想要开始一个新的连接(重新连接或连接重定向)
–RELATED:该包是属于某个已经建立的连接所建立的新连接。举例:FTP的数据传输连接和控制连接之间就是RELATED关系。
iptables -A INPUT-mstate --state RELATED,ESTABLISHED -j ACCEPT ##接受已经建立连接的或由已经建立的连接所建立的新连接的TCP连接(状态防火墙能识别TCP或者UDP会话非状态防火墙只能根据端口识别,不能识别会话)
iptables -A INPUT-i lo -mstate --state NEW -j ACCEPT
iptables -A INPUT-p tcp --dport 22 -mstate --state NEW -j ACCEPT ##接受tcp协议22端口新建访问的链接
iptables -A INPUT-p tcp --dport 80 -mstate --state NEW -j ACCEPT
iptables -A INPUT-p tcp --dport 443 -mstate --state NEW -j ACCEPT
iptables -A INPUT-p tcp --dport 53 -mstate --state NEW -j ACCEPT
iptables -A INPUT -j REJECT
###########实现两个不同网段的通信###########
[root@localhost~]# sysctl -a | grep forward
[root@localhost~]# echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf ##开通内核路由功能
[root@localhost~]# sysctl –p
net.ipv4.ip_forward= 1
[root@localhost ~]#iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.250 ##原地址转换
[root@localhost ~]#iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-dest 172.25.219.119 ##目标地址转换
过程截图如下: