posts - 359,comments - 0,views - 19万

命令:

iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 处理动作或跳转]

ACCEPT: 允许数据包通过。
DROP    : 直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT: 拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT     : 源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT    :  目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
一般不使用REJECT(拒绝)行为.REJECT会带来安全隐患

规则表:
1. filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter.
1. nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
1. Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
1. Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
(这个是REHL4没有的,不过不用怕,用的不多)

规则链:
1. INPUT——进来的数据包应用此规则链中的策略
1. OUTPUT——外出的数据包应用此规则链中的策略
1. FORWARD——转发数据包时应用此规则链中的策略
1. PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
1. POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)

一、封单个IP

1、封锁单个ip:  iptables -I INPUT -s IP -j DROP       #-I 指插入表第一列

    [root@node1 ~]# iptables -I INPUT -s 192.168.1.11 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       all  --  192.168.1.11         anywhere

2、解封单个ip:iptables -D INPUT -s IP -d IP -j ACCEPT

    [root@node1 ~]# iptables -D INPUT -s 192.168.1.11 -j DROP  # 解封IP: 192.168.1.11   #-D  删除
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination

二、封IP段

复制代码
1、封IP段: 从123.0.0.1到123.255.255.254的命令

    [root@node1 ~]# iptables -I INPUT -s 123.0.0.0/8 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
     
    DROP       all  --  123.0.0.0/8          anywhere

2、封IP段: 从123.45.0.1到123.45.255.254的命令

    [root@node1 ~]# iptables -I INPUT -s 123.45.0.0/16 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       all  --  123.45.0.0/16        anywhere
    DROP       all  --  123.0.0.0/8          anywhere

3、封IP段:从123.45.6.1到123.45.6.254的命令是

    [root@node1 ~]# iptables -I INPUT -s 123.45.6.0/24 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       all  --  123.45.6.0/24        anywhere
    DROP       all  --  123.45.0.0/16        anywhere
    DROP       all  --  123.0.0.0/8          anywhere
复制代码

三、全部清理

[root@node1 ~]# iptables -F

四、查询

    [root@node1 ~]# iptables -L INPUT
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination

target:代表进行的动作,ACCEPT 是放行,REJECT 是拒绝,DROP 则是丢弃数据包。
port:代表使用的协议,主要有 tcp、udp 和 icmp 三种。
opt:额外的选项说明。
source:规则针对的来源 IP。
destination:规则针对的目标 IP。

五、删除某一条规则

复制代码
[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
[root@localhost ~]# iptables -L OUTPUT
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:mysql state ESTABLISHED
[root@localhost ~]# iptables -L OUTPUT -n --line-number
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68
2    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:3306 state ESTABLISHED
[root@localhost ~]# iptables -D OUTPUT 3
[root@localhost ~]# iptables -L OUTPUT -n --line-number
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68
2    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
复制代码

 六、端口映射

1、本机端口转发

复制代码
iptables -t nat -A PREROUTING -p tcp -d 192.21.131.81 --dport 80 -j DNAT --to-destination :8081
iptables -t nat -A POSTROUTING -j MASQUERADE
解释一下以上命令:
-t nat :指定操作的表是 NAT 表。
-A PREROUTING :表示将规则添加到 PREROUTING 链中,即在数据包进入路由前执行。
-p tcp :指定数据包协议为 TCP。
-d 172.21.131.81 :指定目标 IP 地址为 172.21.131.81--dport 80 :指定目标端口为 80 端口。
-j DNAT :表示对符合条件的数据包进行目标地址转换。
--to-destination :8081 :将目标 IP 地址转换为本地的 8081 端口。
以上规则将在 PREROUTING 链中对源主机发送到 172.21.131.81 的所有流量进行转发。

-t nat :指定操作的表是 NAT 表。
-A POSTROUTING :表示将规则添加到 POSTROUTING 链中,即在数据包离开路由后执行。
-j MASQUERADE :表示对数据包进行源地址转换,实现 NAT 功能。
以上规则将在 POSTROUTING 链中进行源地址转换,确保返回的数据包正确路由回源主机。

验证端口转发
完成以上配置后,源主机上的 192.21.131.81:80 端口的流量将被转发到本地的 8081 端口。
将在 PREROUTING 链中对源主机发送到 172.21.131.81 的所有流量进行转发,并在 POSTROUTING 链中进行源地址转换,确保返回的数据包正确路由回源主机。
复制代码

2、将192.21.131.81的80端口的所有流量转发到192.21.131.99机器的80端口上

在源主机(172.21.131.81)上添加 iptables 规则
在源主机上执行以下命令,添加 iptables 规则进行端口转发:

iptables -t nat -A PREROUTING -p tcp -d 192.21.131.81 --dport 80 -j DNAT --to-destination 192.21.131.99:80
iptables -t nat -A POSTROUTING -j MASQUERADE
以上规则将在 PREROUTING 链中对源主机发送到 192.21.131.81 的所有流量进行转发,并在 POSTROUTING 链中进行源地址转换,确保返回的数据包正确路由回源主机。

请注意,这些规则仅在源主机上设置即可完成端口转发。目标主机不需要进行任何额外的设置。

 


  

posted on   属于我的梦,明明还在  阅读(1535)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示