Linux-iptables命令详解

iptables 命令

对网络上的一些包通过表的形式进行限定和一些规则的修改

表主要有三种:

  1. mangle:(用的少,只有在操作级别才会用)
  2. filter:对进入的包进行过滤(默认的表)
  3. nat:网络地址转换

filter:

查看filter表信息:

[root@localhost ~]# iptables -t filter -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8500
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8500

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-1  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

自带三条链:INPUT、FORWARD、OUTPUT

(policy ACCEPT):默认全部接收

target:处理方式

prot:协议,有tcp,udp,all

opt:额外的参数

source:原地址,原端口

destination:目的地址,目的端口

填加规则:

[root@localhost ~]# iptables -t filter -A INPUT -j DROP -p tcp --dport 8080
[root@localhost ~]# iptables -t filter -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8500
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8500
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-1  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       

-A :表示追加,需指定链;

-I:表示在插入(默认第一个,但是也是指定位置),需指定链;例如 -I INPUT 2(表示插入到第二条)

-j :表示处理方式,需指定target

-p:需要指定协议

–dport:需要指定input的端口

-d:需要指定IP

-s:需要源IP

注意:

关于添加的规则的执行顺序和优先级;是按照规则的顺序执行,从上往下;当时没有找到匹配的就按照policy 来

删除规则:

[root@localhost ~]# iptables -t filter -D INPUT 3
[root@localhost ~]# iptables -t filter -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8500
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8500

-D :表示删除,需指定链;可以指定具体的规则所在位置数

iptables  -t filter -A OUTPUT -j DROP -p tcp -d IP地址

表示对本机基于tcp协议的访问对指定IP的包进行丢弃

nat:

查看列表:

[root@localhost ~]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:8500


默认有四条链:PREROUTING、INPUT、OUTPUT、POSTROUTING

PREROUTING:路由前;改目的地址

POSTROUTING:路由后;改源地址

在这里插入图片描述
ip转接:

例如:假设需要将访问192.168.0.12:7788的包给转接到192.168.0.11:7799;需要两步

  1. 在192.168.0.12:7788的nat表的Prerouting链中添加目的地址;
  2. 在192.168.0.12:7788的nat表的postrouting链中添加源规则;

注意:如果没起作用可能是ip_forward没有开启;可以通过cat /proc/sys/net/ipv4/ip_forward查看(1为开启)

通过sysctl -w net.ipv4.ip_forward=1开启

iptables -t nat -A PREROUTING -j DNAT -p tcp --dport 7788 --to 192.168.0.11:7799
iptables -t nat -A POSTROUTING -j SNAT -p tcp -d 192.168.0.11 --dport 7799 --to 192.168.0.12

备注:

NAT -p tcp --dport 7788 --to 192.168.0.11:7799


```bash
iptables -t nat -A POSTROUTING -j SNAT -p tcp -d 192.168.0.11 --dport 7799 --to 192.168.0.12

备注:

nat表中的INPUT和OUTPUT链是使用主要是一些APP是直接通过forward进行发包,这时候就需要用到OUTPUT进行修改目的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值