Iptables

Iptables命令管理

Iptables


Iptables

 1.显示内核三张表的信息

  iptables -nL     ##默认为filter表

Iptables

Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)

  iptables -nL -t nat  ##显示nat表

Iptables

Chain PREROUTING (policy ACCEPT)
Chain INPUT (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Chain POSTROUTING (policy ACCEPT)

 iptables -nL -t mangle  ##显示mangle表,备用

Iptables

Chain PREROUTING (policy ACCEPT)
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Chain POSTROUTING (policy ACCEPT)

 2.表格命令编辑  ##默认filter表

Iptables

  iptables -A INPUT -s 172.25.254.100 -j REJECT  ##添加

  iptables -D INPUT 1  ##删除INPUT链的第1条

Iptables

  iptables -I INPUT -s 172.25.254.100 -j REJECT  ##插入至第1条

Iptables

  iptables -R INPUT 1 -j ACCEPT   ##将INPUT第1条规则改为ACCEPT

Iptables

 【iptables -F   ##刷新(类似删除)配置,但是重启后配置依然存在

Iptables

  systemctl restart iptables.service】

 【iptables -F   ##刷新后保存,重启后配置为空

Iptables

  service iptables save
  systemctl restart iptables.service】

  iptables -P FORWARD DROP  ##将FORWARD链规则改为DROP

Iptables

  iptables -N redhat  ##新建redhat自定义链

Iptables

  iptables -E redhat REDHAt  ##修改自定义链的名称

Iptables

  iptables -X REDHAt  ##删除自定义链

Iptables


 3.服务管理

[[email protected] ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Iptables

  ###允许所有主机链接ssh(22)
[[email protected] ~]# iptables -A INPUT -s 172.25.254.8 -p tcp --dport 80 -j ACCEPT
  ###只允许主机8链接http(80)
[[email protected] ~]# iptables -A INPUT ! -s 172.25.254.8 -p tcp --dport 53 -j REJECT
  ###除了主机8都拒链接DNS(53)
[[email protected] ~]# iptables -A INPUT -j REJECT
  ###读取以上规则后,其他所有访问拒绝  (从前到后,逐条读取)
[[email protected] ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  172.25.254.8         0.0.0.0/0            tcp dpt:80
REJECT     tcp  -- !172.25.254.8         0.0.0.0/0            tcp dpt:53 reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[[email protected] ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Iptables

   ##将修改后的配置保存在文件/etc/sysconfig/iptables中

六.Iptables地址转换
  注意:
  1.一定要刷新filter表
  [[email protected] ~]# iptables -F
  2.打开内核路由

  [[email protected] ~]# vim /etc/sysctl.conf

Iptables

  [[email protected] ~]# sysctl -a | grep ip_forward
   net.ipv4.ip_forward = 0
  [[email protected] ~]# sysctl -p  ##和重启服务效果一样
   net.ipv4.ip_forward = 1
  【[[email protected] ~]# systemctl restart systemd-sysctl.service】

  3.0.208主机配置网络
  IPADDR  = 172.25.0.208
  GATEWAY = 172.25.0.108 (两块网卡主机)
  4.设定策略
[[email protected] ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.208
[[email protected] ~]# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 172.25.0.208
[[email protected] ~]# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       all  --  0.0.0.0/0            0.0.0.0/0            to:172.25.0.208

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  0.0.0.0/0            0.0.0.0/0            to:172.25.254.208  

 5.当主机8访问链接208主机时,转换到0.208主机上
[[email protected] Desktop]$ ssh [email protected]
[email protected]'s password:
Last login: Tue May  8 20:36:21 2018
[[email protected] ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.25.0.208  netmask 255.255.255.0  broadcast 172.25.0.255