iptables一些基本常识
iptables中对于同一服务的不同规则的匹配顺序是自上而下,一旦匹配到规则,则不再往下匹配,若都没有匹配上,则匹配默认规则
iptables有三张表,五条链表:filter,nat,mangle
filter表有:INPUT,OUTPUT,FORWARD三条链(不通过内核)
nat表有:PREROUTING,POSTROUTNG俩条链
mangle包含所有的链
INPUT:数据包的目的地是自己本身
OUTPUT:数据包是由自己发出的
FORWARD:数据包从一个接口进入,另一个接口发出
做路由转发之前必须开启内核路由
PREROUTING:做路由之前
POSTROUTING:做路由之后
一些基本参数:
iptable
-t ##指定表名称
-n ##不作解析
-L ##列出指定表中的策略
-A ##增加策略
-p ##网络协议
--dport ##端口
-s ##数据来源
-j ##动作
ACCEPT ##允许
REJECT ##拒绝
DROP ##丢弃
-N ##增加链
-E ##修改链名称
-X ##删除链
-D ##删除指定策略
-I ##插入
-R ##修改策略
-P ##修改默认策略
首先开启iptables服务:
iptables -t filter -nL #查看filter表中的策略
iptable -F #刷掉filter表中的所有策略,当没有用-t指定表名称时默认时filter
service iptables save #保存当前策略
iptables -A INPUT -i lo -j ACCEPT #允许lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##允许访问22端口
iptables -A INPUT -s 172.25.254.250 -j ACCEPT ##允许250主机访问本机所有端口
iptables -A INPUT -j REJECT ##拒绝所有主机的数据来源
iptables -N redhat ##增加链redhat
iptables -E redhat westos ##改变链名称
iptables -X westos ##删除westos链
iptable -D INPUT 2 ##删除INPUT链中的第二条策略
iptables -I INPUT -p tcp --dport 80 -j REJECT ##插入策略到INPUT中的第一条
iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT ##修改第一条策略
iptable -P INPUT DROP ##把INPUT表中的默认策略改为drop
当服务的状态为RELATED/ESTABLISHED时,不必再次验证:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT
通过 一台有俩个网卡ip主机 路由 使不同ip网段的另外俩台主机网络连通:
路由主机配置:
sysctl -a | grep forward
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p
iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-dest 172.25.16.10
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.16
测试主机配置:
设置其网关为路由主机的同网段ip:
测试 连接 另外一台完全不同网段ip的主机: