欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > iptables之地址转换

iptables之地址转换

2026/2/2 10:23:05 来源:https://blog.csdn.net/2401_87121330/article/details/144209005  浏览:    关键词:iptables之地址转换

1、自定义链

iptables -N hello #在filter表中创建一个自定义链,链名hello,自定义链名可以任意大小写

iptables -E hello happy #修改自定义的链名

iptables -t filter -I happy -s 192.168.206.30 -p icmp -j REJECT #禁止192.168.206.30ping本机

自定义没有策略(INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING),无法直接使用

iptables -I INPUT -p icmp -j happy #把自定义规则引入到INPUT链中

删除INPUT引用的自定义链规则和自定义链

iptables -D INPUT/happy 1

iptables -X happy  #-X只能删除空白的自定义链

2、地址转换

  • 搭建环境

 

ubuntu1内网   ip地址192.168.206.20  网关192.168.206.254

ubuntu2网关服务器   ens33 192.168.206.254  ens37 12.0.0.254

ubuntu3外网  ip地址12.0.0.10   网关12.0.0.254

ubuntu2

vim  /etc/netplan/01-network-manager-all.yaml

修改ens33和ens37

netplan apply

vim /etc/sysctl.conf #linux系统内核的接口文件,修改配置内核的参数,使之永久生效

set nu---> 28行,去掉注释,net.ipv4.ip_forward=1#开启Linux服务器内核转发的功能

保存退出

sysctl -p#立即生效,或者重启生效

ubuntu1和ubuntu3一起安装nginx

apt  -y  install  nginx

systemctl  restart  nginx

vim  /etc/netplan/01-network-manager-all.yaml  #配置相应的ip地址和网关

netplan  apply

  • SNAT

ubuntu2:

iptables -t nat -A POSTROUTING -s 192.168.206.0/24 -o ens37 -j SNAT --to 10.0.0.10

#从ens37设备出去的数据包且网段属于192.168.233.0网段,把这个网段的地址统一转换成10.0.0.10

ubuntu3 tail -f /var/log/nginx/access.log

ubuntu1 访问12.0.0.10

  • DNAT

目的地址转换和服务映射

ubuntu2:

iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.206.20:80

#所有从ens37进入本机的数据包统一转换成11.0.0.11,访问的端口是80,统一映射为访问192.168.206.20:80

Ubuntu1 tail -f /var/log/nginx/access.log

ubuntu3 访问11.0.0.11

3、在linux中抓包

tcpdump  #只是抓取数据包的内容,不能查看抓包的数据

tcpdump  tcp  -i  ens33  -t  -s0  -c  10  and  dst  port  80  and src  net  192.168.206.0/24  -w  /opt/target.cap   #静态抓取,抓完10个就会禁止

tcpdump 开头

tcp 协议 icmp dup

-i ens33 指定设备名 从哪个设备经过的数据包

-t 不显示时间

-s0 默认抓包的长度是68字节,s0就是抓取完整的数据包

-c 10 抓取多少个数据包

and dst port 目标端口80 和80端口相关的数据包

and src net 源ip是 192.168.206.0/24这个网段的ip地址

-w 抓包的结果保存到指定的文件当中去

.cap 是为了给抓包工具(wireshark)分析

sz target.cap #下载到电脑桌面

tcpdump  [-i  ens33]  [-s0] -w  /opt/1.cap   #动态,都抓取 []可不加

4、firewalld

firewalld是centos自带的,而且firewalld是默认的

ufw是ubuntu自带的,使用的就是iptables

firewalld是根据区域来进行配置不同的规则,和硬件防火墙很相似

区域名作用
trusted 信任区所有流量都可以进入
public 公共区域,默认区只允许系统默认的规则(ssh和icmp协议),其他的流量传入全部拒绝
external 外部区域只允许系统默认的规则(ssh和icmp协议),其他的流量传入全部拒绝,经过此区域的流量可以将ipv4的地址进行伪装
home 家庭区域只允许系统默认的规则(ssh和icmp协议,dhcpv6协议),其他的流量传入全部拒绝
internal 内部区域只允许系统默认的规则(ssh和icmp协议,dhcpv6协议),其他的流量传入全部拒绝
work 工作区域只允许系统默认的规则(ssh和icmp协议,dhcpv6协议),其他的流量传入全部拒绝
block 限制区拒绝所有流量的传入
drop 丢弃区域拒绝所有流量的传入,没有回显信息
DMZ 非军事区域只允许系统默认的规则(ssh),其他的流量传入全部拒绝

配置方法:

firewall-cmd   #命令行的开头

1、查看系统的默认区域

firewall-cmd --get-default-zone

2、查看默认区域内的规则

firewall-cmd --list-all

3、修改默认区域

firewall-cmd --set-default-zone=block

4、添加服务

firewall-cmd --add-service=http --zone=public #把80端口放行,添加到公共区域

5、添加多个服务

firewall-cmd --add-service={http,ftp} --zone=public

6、移除

firewall-cmd --remove-service=http --zone=public

7、永久生效

firewall-cmd --add-service={http,ftp} --zone=public --permanent #永久生效

firewall-cmd --reload #重新加载

8、添加/删除端口

firewall-cmd --zone=public --add-port=80/tcp

firewall-cmd --zone=public --remove-port=80/tcp

firewall-cmd --add-port=80-3306/tcp #添加80到3306范围之内的端口

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com