平常运维(四)

iptables 规则

默认规则保存在配置文件中/etc/sysconfig/iptableshtml

iptables -F 清空规则
service iptables save 保存当前规则到配置文件里
###默认规则在 filter 表里  +t 更改指定的表  默认就是filter表
iptables -Z 清空计数器
iptables -A 增长到最后   
iptables -I  install 插入最前 优先级从前日后  默认就是filter表
iptables -D 删除
iptables -nvL --line-number   序号
iptables -D INPUT 7 根据序号7删除规则
iptables -P 默认的规则
iptables -P OUTPUT DPOR
iptables -A  INPUT -s 192.168.100.1 -p tcp --sport 80 -d 192.168.100.10 --dport 8080 -j DROP

具体参数linux

·-p:协议(tcp) 
·-s:发起源,源IP地址
·-d:目标地址,目标IP地址
·- -sport:发起端源端口,指定要匹配的端口
·- -dport:目标端口,指定匹配目标端口
·- -dports:端口断
·-m:原有规则补充(tcp、state、malitiport)
    iptables -A INPUT -m state - -state RELATED,ESTABLISHED -j ACCEPT

建立一个iptables规则脚本,一次写入bash

`#!/bin/bash`
ipt="/usr/sbin/iptables"    #必须全局变量
`$ipt -F   #清空原规则
`$ipt -Z   #清空计数器
`$ipt -X   #删除指定的链
`$ipt -P INPUT DROP   #默认策略
`$ipt -P OUTPUT ACCEPT  #默认策略
`$ipt -P FORWARD ACCEPT  #默认策略
`$ipt -A INPUT -m state - -state RELATED,ESTABLISHED -j ACCEPT #放行相关数据包
`$ipt -A INPUT -s 192.168.100.0/24 -p tcp - -dport 22 -j ACCEPT
`$ipt -A INPUT -p tcp - -dprot 80 -j ACCEPT
`$ipt -A INPUT -p tcp - -dprot 21 -j ACCEPT
`$ipt -A INPUT -p icmp --icmp-type 8  -j DROP#能够PING外网,不能被别人ping本身

service iptables save     #保存策略

实地操做时 发现报错
[root@huidou01 sh]$ /bin/bash iptables.sh
iptables: Bad built-in chain name.         #坏的链

查了脚本发现 OUTPUT 写错了 ,更改后正确执行 ssh

nat 表

nat 表应用tcp

/proc/sys/net/ipv4/ip_forward    端口转发默认为0

打开端口转发 echo 1 > /proc/sys/net/ipv4/ip_forward ide

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE

不用指定SNAT的目标ip了,无论如今eth33的出口得到了怎样的动态ip,MASQUERADE会自动读取eth33如今的ip地址而后作SNAT出去,这样就实现了很好的动态SNAT地址转换。ui

mii-tool ens37 命令行检查交换机状态

端口转发

A1:192.168.100.100
A2:192.168.50.50
B1:192.168.50.100命令行

  1. A机器添加新的硬件网卡,而且选择LAN区段,分配内网区段
  2. B机器添加新的硬件网卡,而且选择和A机器相同的LAN区段
  3. A、B启动
  4. 设定A2(ens37)网卡,设定ip 为192.168.50.50
    临时命令设置ifconfig ens37 192.168.50.1/24,永久须要写入配置文件
  5. ifdown ens33,设定B1网卡(ens37)ifconfig ens37 192.168.50.100/24
  6. 相同网段相互ping 通
  7. A机器上打开路由转发,echo "1" > /porc/sys/net/ipv4/ip_forward 修改内核参数
  8. 设置规则
    iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE
    IP欺骗
  9. B设备设置网关,route -n 查看
    route add default gw 192.168.50.1
    #B机器上的网关要和A机器上的第二块内网网卡设置同样的IP才行,不然最后ping不通A1
  10. B1 ping 通A1 is OK
  11. B1 设置DNS
    vi /etc/resolv.conf -> nameserver 119.29.29.29
  12. ping 公网通 is OK

端口映射

  1. 打开端口转发
    A机器上打开路由转发,echo "1" > /porc/sys/net/ipv4/ip_forward 修改内核参数
  2. 清空规则从新设定code

    iptables -F
    iptables -t nat -A PREROUTING -d 192.168.100.100 -p tcp - -dport 1122 -j DNAT - -to 192.168.50.100:22  
    #进去的包

    #把进来的包 从目标(-d)IP是192.168.100.100(A1),目标端口(指定的)是1122端口 ,作端口转发到192.168.50.100:22(B1的22端口) 端口上去(端口映射)server

##数据包从公网进来,到个人可连公网的A1机器上去,设置它是TCP协议的数据包,端口映射到A1机器的1122端口,在从1122端上作DNAT转发到个人目标B1地址端口上去。

iptables -t nat -A POSTROUTING -s 192.168.50.100 -j SNAT - -to 192.168.100.100   
#回来的包

#回来的包通过A1机器作一个SNAT,把目标地址改为192.168.100.100(源IP)
##从B1机器源IP(-s) SNAT转发出去到我A1机器IP去。实现通信,实际上仍是使用192.168.100.100分配的IP192.168.100.1IP登陆的
3.设置网关 192.168.50.50

  1. sshd 链接成功 is OK!

扩展

  1. iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
  2. sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
  3. iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html
相关文章
相关标签/搜索