您的位置:首页 > 房产 > 家装 > snat和dnat以及firewalld

snat和dnat以及firewalld

2024/12/23 4:17:22 来源:https://blog.csdn.net/m0_71178834/article/details/140015764  浏览:    关键词:snat和dnat以及firewalld

备份和还原:

删除自定义链:

[root@test2 sysconfig]# iptables -X chengqian 

snat和dnat:

snat:源地址转换

内网 ------> 外网 内网ip转换成可以访问外网的ip

内网的多个主机可以使用一个有效的公网ip地址访问外部网络

dnat:目的地址转换

外部用户,可以通过一个公网地址访问服务内部的私网服务。

私网ip和公网ip做一个映射。

操作:(外暴内不暴,内变外不变)暴==暴露 变==IP地址变化

test2:(内网)

[root@test2 ~]# cd /etc/sysconfig/network-scripts/
[root@test2 network-scripts]# vim ifcfg-ens33 
​
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.60.20
NETMASK=255.255.255.0
GATEWAY=192.168.60.254
DNS1=218.2.135.1
DNS2=221.131.143.69
[root@test2 network-scripts]# systemctl restart network
[root@test2 ~]# curl 12.0.0.100
This is test4
​
[root@test2 ~]# tail -f /var/log/nginx/access.log
192.168.60.20 - - [27/Jun/2024:10:39:15 +0800] "GET / HTTP/1.1" 200 14 "-" "curl/7.29.0" "-"
12.0.0.100 - - [27/Jun/2024:11:24:42 +0800] "GET / HTTP/1.1" 200 14 "-" "curl/7.29.0" "-"
​

test3:(路由器)

[root@test3 network-scripts]# vim ifcfg-ens331 TYPE=Ethernet2 DEVICE=ens333 ONBOOT=yes4 BOOTPROTO=static5 IPADDR=192.168.60.2546 NETMASK=255.255.255.07 #GATEWAY=192.168.60.28 #DNS1=218.2.135.19 #DNS2=221.131.143.69
[root@test3 network-scripts]# vim ifcfg-ens361 TYPE=Ethernet2 DEVICE=ens363 ONBOOT=yes4 BOOTPROTO=static5 IPADDR=12.0.0.2546 NETMASK=255.255.255.07 #GATEWAY=192.168.60.28 #DNS1=218.2.135.19 #DNS2=221.131.143.69
[root@test3 network-scripts]# vim /etc/sysctl.conf  #linux内核参数的配置文件,内核优化都在这个配置文件当中设置
net.ipv4.ip_forward = 1         
#加一行这个
[root@test3 network-scripts]# sysctl -p #可以使内核参数的配 置立刻生效
[root@test3 network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.60.0/24 -o ens36 -j SNAT --to 10.0.0.10         #从内网访问外网
[root@test3 network-scripts]# systemctl restart network
[root@test3 ~]# iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.60.10:80         #从外网访问内网

test4:(外网)

[root@test4 network-scripts]# vim ifcfg-ens33 
​
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
DNS1=218.2.135.1
DNS2=221.131.143.69
[root@test4 network-scripts]# tail -f /var/log/nginx/access.log 
12.0.0.100 - - [27/Jun/2024:11:12:17 +0800] "GET / HTTP/1.1" 200 4833 "-" "curl/7.29.0" "-"
10.0.0.10 - - [27/Jun/2024:11:15:00 +0800] "GET / HTTP/1.1" 200 4833 "-" "curl/7.29.0" "-"
[root@test4 html]# curl 192.168.60.20
this is test2
iptables -t nat -A POSTROUTING -s 192.168.60.0/24 -o ens36 -j SNAT --to 10.0.0.10 

-t nat 指定表为nat表

-A POSTROUTING A 添加

-s 指定源ip

-o 指定输出网络设备

-j 控制类型 SNAT

--to 指定整个网段 192.168.60.0/24 从ens36出去时,做源地址转换,转换成10.0.0.10

DNAT

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

-d 11.0.0.11 指定作为目的地址转换的ip地址

-i 从指定的设备进入本机

-p 指定协议

-dport 指定端口

-j DNAT 使用目的地址转换

--to 192.168.60.20

外网想要访问内网的192.168.60.20:80的整个web服务。只需要访问11.0.0.11就可以访问内网的web服务。

在linux当中如何抓包:

tcpdump就是linux自带的抓包工具。(最小化安装是不带的,需要额外安装。)

静态和动态

[root@test2 ~]# tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.60.0/24 -w /opt/target.cap

tcp 指定抓包的协议 udp icmp 第一个参数,可以不指定协议。

-i 只抓经过指定设备的包

-t 不显示时间戳

-s0 抓取完整的数据包

-c 10 抓几个数据包 10

dst port 指定抓包的目的端口

src net 192.168.60.0/24 指定抓包的ip地址

net 网段

host 主机 (IP地址)

src host 192.168.60.20

-w 保存指定路径

如果要用wireshark对数据包进行分析,tcpdump在抓包时,要使用-s0,抓取完整格式,否则wireshark无法分析。

tcpdump -i ens33 -s0 -w  /opt/ens33.cap

firewalld

firewalld是centos7自带的,也是默认的,7以前默认是iptables。

ubanut

ufw disable-----关闭防火墙

他和iptables一样,也是包过滤防火墙

ip

端口

协议

firewalld是按照区域来进行划分:

public:公共区域,默认配置了ssh以及DHCPv6预定服务是放通的,其他全部都是拒绝。默认区域。

trusted:信任区域,允许所有的数据包放通

block:限制区域,拒绝所有

drop:丢弃区域,丢弃所有数据包。

dmz:非军事区域,默认就只允许ssh通过

home:家庭区域,默认只允许ssh通过

internal:内部区域,和home一模一样

external:外部区域,也是默认允许ssh通过,其他的全部拒绝

work:工作区域,默认放空ssh

[root@test2 ~]# firewall-cmd    #命令行工具
[root@test2 ~]# firewall-cmd --get-default-zone  #查看 当前系统的默认区域

切换区域:

[root@test2 ~]# firewall-cmd --set-default-zone=block   #也是即时生效

查看区域内允许访问的服务

[root@test2 ~]# firewall-cmd --list-services 
ssh dhcpv6-client

dhcpv6-client 获取ipv6的地址

该区域默认

[root@test2 ~]# interfaces:ens33 

只要添加了网卡,会默认的把网卡添加到区域中去

将http加入到firewall中

[root@test2 ~]# firewall-cmd --add-service=http --zone=public 
[root@test2 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: ssh dhcpv6-client http
[root@test3 ~]# curl 192.168.60.20
this is web

端口控制:

[root@test2 ~]# firewall-cmd --zone=public --add-port=8
0/tcp       #临时
success

永久:

[root@test2 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent 

删除

[root@test2 ~]# firewall-cmd --zone=public --remove-port=80/tcp

一次添加多个端口

[root@test2 ~]# firewall-cmd --zone=public --add-port={21,80,313,43,3306}/tcp

删除

[root@test2 ~]# firewall-cmd --zone=public --remove-port={21,80,313,43,3306}/tcp

指定ip地址

[root@test2 ~]# firewall-cmd --add-source=192.168.60.30success
[root@test2 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: 192.168.60.30
[root@test3 ~]# ping 192.168.60.20
PING 192.168.60.20 (192.168.60.20) 56(84) bytes of data.
64 bytes from 192.168.60.20: icmp_seq=1 ttl=64 time=0.315 ms
64 bytes from 192.168.60.20: icmp_seq=2 ttl=64 time=0.643 ms
64 bytes from 192.168.60.20: icmp_seq=3 ttl=64 time=0.442 ms

删除

[root@test2 ~]# firewall-cmd --remove-source=192.168.60.30
success
[root@test2 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: ssh dhcpv6-clientports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
​

版权声明:

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

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