目录
概述
snat :源地址转换
内网------外网 内网ip转换成可以访问外网的ip
也就是内网的多个主机可以只有一个有效的公网ip地址访问外部网络
DNAT:目的地址转发
外部用户,可以通过一个公网地址访问服务内部的私网服务
也就是私网的IP和公网IP做一个映射
SNAT源地址转换
步骤:
1.修改路由器ens33的IP地址,改成内网网关
2.修改路由器ens36的IP地址,改成外网网关
3.修改外网的IP地址和网关
4.修改内网的网关
5.配置路由器的内核参数文件
6.设置nat表的规则
-t nat 指定表为nat表
-A POSTROUING 离开本机 -A添加
-s 指定源IP
-o 指定输出网络设备
-j 控制类型
--to 指定整个网段192.168.233.0/24 从ens36出去时,做源地址转换,转换成10.0.0.10
7.重启网卡 systemctl restart network
8.查看外网的日志
DANT目的地址转换
1.路由器设置规则
-d 11.0.0.11 指定做为目的地址转换的IP地址
-i 从指定的设备进入本机
-p指定协议
-j DNAT 使用目的地址转换
--to 192.168.233.10
外网想要访问内网的192.168.233.10:80的这个web服务,只需要访问11.0.0.11就可以访问内网的web服务
bash
iptables -t nat -A PREROUTING -d 10.0.0.10 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80
抓包
在Linux当中如何抓包
tcpdump就是Linux自带的抓包工具(最小化安装时不带的,需要额外安装)
静态
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.233.0/24 -w /opt/target.cap
tcp 指定抓包的协议 udp icmp 第一个参数,可以不指定协议
-i 只抓经过指定设备的包
-t 不显示时间戳
-s0 抓完整的数据包
-c 10 指定抓包的目的端口
dst port 指定抓包的目的端口
src net 192.168.233.0/24 指定抓包的IP地址
net 网段
host 主机(IP地址)
-w 保存指定路径
bash
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 20.0.0.0/24 -w /opt/target.cap
动态
tcpdump -i ens33 -s0 -w /opt/ens33.cap
如果要用wireshark对数据包进行分析,tcpdump在抓包时,要使用-s0抓取完整格式,否则wireshark无法分析
bash
tcpdump -i ens33
firewalld
ubantu的不同 ufw ubantu firewalld开启防火墙 ufw ubantu firewalld 关闭防火墙
它是按照区域来划分的
firewall-config
public:公共区域,默认配置了ssh以及DHCPv6预定服务是放通的,其他全部都是拒绝,默认区域
trusted:信任区域,允许所有的数据包放通
block:限制区域,拒绝所有
drop:丢弃区域,丢弃所有数据包
dmz:非军事区域,默认只运行ssh通过
home:家庭区域。默认只允许ssh通过
internal:内部区域,和home一模一样
external:外部区域,也是默认允许ssh通过,其他全部拒绝
work:工作区域,默认允许ssh通过
firewall-cmd 命令行工具
firewall-cmd --get-default-zone 查看当前系统的默认区域
firewall-cmd --list-all 查看当前区域设定的规则
firewall-cmd --set-default-zone=block 切换区域
firewall-cmd --list-services 查看区域内允许访问的服务
dhcpv6-client 获取ipv6的地址
interfaces: ens33 该区域默认使用的网卡设备
firewall-cmd --zone=pulic --change-interface=ens36 修改区域使用的网卡设备
firewall-cmd --add-service=http --zone=pulic 添加服务
firewall-cmd --add-servicr={ftp,nfs,http} --zone=pulic --permanent 添加多个服务并且永久生效
firewall-cmd --remove-servicr={ftp,nfs,http} --zone=pulic --permanent 删除多个服务
firewall-cmd --reload 重启
查看当前系统的默认区域
bash
firewall-cmd --get-default-zone
查看当前区域设置的规则
bash
firewall-cmd --list-all
切换当前系统的默认区域
bash
firewall-cmd --set-default-zone=block
firewall-cmd --set-default-zone=drop
查看区域内允许访问的服务
bash
firewall-cmd --list-service
firewall-cmd --list-services
#两个都行,效果一样
修改区域默认使用的网络设备
bash
firewall-cmd --zone=public --change-interface=ens36
firewall-cmd --zone=home --remove-interface=ens36
添加服务到默认域中
bash
firewall-cmd --add-service=http --zone=public
多个服务,永久添加
bash
firewall-cmd --add-service={ftp,nfs,http} --zone=public --permanent
#--permanent 永久添加
删除服务
bash
firewall-cmd --remove-service=http --zone=public
重新加载
bash
firewall-cmd --reload
端口管理
firewall-cmd --zone=pulic --add-port=80/tcp 添加端口
firewall-cmd --zone=pulic --add-port=80/tcp --permanent 永久生效
fierwall-cmd --add-source=192.168.233.20 添加源地址
添加端口到默认域中
bash
firewall-cmd --zone=public --add-port=80/tcp
添加端口并指定协议,端口在前协议在后,用 / 分割
bash
firewall-cmd --zone=public --add-port={80,21,3306,22}/tcp
删除端口
bash
firewall-cmd --zone=public --remove-port=80/tcp
添加源IP
bash
firewall-cmd --zone=block --add-source=192.168.233.20
firewall-cmd --get-active-zone