目录
1、iptables和firewalld
1.1、GUI和CLI
1.2、查看内核和系统的版本
1.3、IP tables和netfilter的关系
编辑
1.4、NAT概述
2、SNAT策略及应用
2.1、SNAT策略概述
2.2、SNAT策略的原理
2.3、SNAT策略的应用
2.3.1、SNAT代理内部机器上网实验
2.4、如何知道IP地址是否冲突?arping
2.5、在windos里添加一条到192.168.70.0网段的路由
3、DNAT策略概述
3.1、DNAT策略的应用环境
3.2、DNAT策略的原理
3.3、DNAT策略的实现
3.3.1、windows里边添加路由
3.4、总结DNAT和SNAT的区别
4、动态路由协议
4.1、IGP,内部网关协议(inner gateway protocol)
4.2、EGP外部网关协议(Exterior Gateway Protocol )
本章结构
1、iptables和firewalld
iptables是之前centos6用的防火墙规则命令,而firewalld是centos7和8使用的命令。当然在centos7和8中这两个规则命令都能够使用。firewalld底层调用的命令仍是iptables
1.1、GUI和CLI
GUI(Graphic User Interface):用户图形界面,可以用鼠标点击
GLI(Command Line Interface):命令行界面
1.2、查看内核和系统的版本
[root@fttswlp ~]# cat /etc/centos-release # 查看系统的版本
CentOS Linux release 7.9.2009 (Core)
[root@fttswlp ~]# uname -r # 查看内核的版本
3.10.0-1160.el7.x86_64
1.3、IP tables和netfilter的关系
# netfilter文件的位置
/usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/net/ipv4/netfilter
1.4、NAT概述
NAT解决的问题:IPV4地址不足,不能给每个人或者每个设备都分配足额的IP地址
2、SNAT策略及应用
2.1、SNAT策略概述
🍓[SNAT策略]🍓
- 局域网主机共享单个公网IP地址接入Internet
网关服务器就是路由器;网关就是路由器LAN口的地址,给局域网提供服务。其实哪个口子接着交换机哪个口子就是网关。
🍓[SNAT策略的原理]🍓
- 源地址转换,Source Network Address Translation
- 修改数据包的源IP地址
2.2、SNAT策略的原理
🍓[未使用SNAT策略时的情况]🍓
因为未使用SNAT,所以源地址还是一个私有IP地址,所以数据能送出去,但是回不来。
🍓[在网关中使用SNAT策略以后]🍓
Linux网关服务器内部有一个NAT映射表,记录着源地址和目的地址的IP地址和端口号,所以这就保证了SNAT修改源地址和目的地址的时候不会出现错误。映射表是在内核中完成的。
2.3、SNAT策略的应用
2.3.1、SNAT代理内部机器上网实验
步骤就是按照上边这个图片来
🦖[流程图]🦖
要求:
- 客户机:配置好IP地址、网关和dns就可以了
- firewall网关服务器:
- 配置好IP地址、网关和dns
- 开启路由器功能
- 在client和firewall网关服务器上都要关闭selinux和防火墙,然后在firewall上再开启。selinux是保护linux系统安全的一个机制,暂时不适用,建议关闭。
🍓[关闭selinux和防火墙]🍓
- 关闭selinux的命令:setenforce 0 临时关闭;修改"/etc/sysconfig/selinux",修改内容"SELINUX=disabled",永久关闭。修改只会要"reboot"重启系统
# enforcing - SELinux security policy is enforced. # 强制执行 -- 1
# permissive - SELinux prints warnings instead of enforcing. # 宽容模式--0
# disabled - No SELinux policy is loaded. # 禁用
- 关闭防火墙命令:service firewalld stop(马上关闭firewall的服务);systemctl disable firewalld(设置firewalld服务开机不启动)
🍓[添加网卡]🍓
在这界面点击[编辑虚拟机设置],在虚拟机设置点击[添加],在添加硬件向导中点击[网络适配器],然后点完成。在虚拟机设置这里改变网络适配器2的网络连接为桥接模式。
然后点击开启虚拟机,进入虚拟机。进行下边图片中的操作
虽然上边我们添加了网卡ens37,但是我们在这个"/etc/sysconfig/network-scripts"文件夹中没有发现有这个网卡名字的文件,所以我们还要配置这个文件。即默认情况下虚拟机增加了网卡,但是不会自动生成配置文件,需要手工的去配置。
然后修改"ifcfg-ens37"成为你想要的信息,本例子中的要的信息要配置成这样。因为本例中ens37是LAN口所以不要配置网关和DNS,所以把下图中倒数一二行删除。内容什么的,请友友按你们的需求来修改。
看一下ens33和ens37的网关配置。ens33的就是作为WLAN口使用,ens37是作为LAN口使用。
最后我们需要重新启动网络服务
centos7的用户使用这个命令
service network restart # 重启一下网络服务,
centos8的用户使用这个命令
ifup ens33 # 重启ens33网卡
ifup ens37 # 重启ens37网卡
重新启动服务之后,设置的各个指标都会对应的文件中。如,存放DNS的文件为“/etc/resolv.conf”
🍓[编写防火墙脚本文件--防火墙脚本的一般结构]🍓
- 设置网络、网卡、IP地址等变量
- 加载包过滤相关的内核模式
- FTP相关:ip_nat_ftp、ip_conntrack_ftp
- Mail相关:ip_nat_irc、ip_conntrack_irc
- 开启路由器转发功能
- echo 1 >/proc/sys/net/ipv4/ip_forward
- 修改/etc/sysctl.conf,加入net.ipv4.ip_forward = 1。设置后使用sysctl -p,让内核重新加载这个变量
注意路由器是一个接口一个网段
- 用于添加的具体防火墙规则内容
- 清空原有规则,建立新的规则
🍓[在网关服务器上制定规则]🍓
写成脚本然后执行这个规则脚本
[root@fttswlp script]# cat snat.sh
#!/bin/bash
# 清除filter表和nat表里的防火墙规则
iptables -F
iptables -t nat -F
# 防止INPUT表是DROP
iptables -P INPUT ACCEPT
# 关闭firewalld服务
service firewalld stop
# 设置开机不启动firewalld服务
systemctl diable firewalld
# SNAT策略
# 只要是192.168.70.0网段出来IP地址就会把它换成192.168.0.204
iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens33 -j SNAT --to-source 192.168.0.204
# 对于SNAT策略若是我们不指定改为具体的源地址,可以这样设置。作用和上边哪个命令是一样的
# iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ppp0 -j MASQUERADE
# 这个命令就是表示着用哪个口出去上网就伪装哪个口的IP地址
# 开启路由功能
echo 1 >/proc/sys/net/ipv4/iP_forward
🍓[验证]🍓
只要我们的192.168.70.1这个客户机能够ping通www.baidu.com这个实验就是成功了。
🍓[错误检查]🍓
要是ping www.baidu.com有问题,就ping 自己的网,若是ping不通,检查一下网卡类型是不是桥接、IP地址是否配置正确;再ping自己的外网卡,再ping 114.114.114.114。一路ping出去,一段一段的检查。
2.4、如何知道IP地址是否冲突?arping
在另外的一台机器上执行"arping + 你想要知道的IP地址",如果有一个IP地址有两个或者多个不同的MAC地址,就说明IP地址出现冲突了
2.5、在windos里添加一条到192.168.70.0网段的路由
在windos10里边要以管理员方式运行cmd
我们的windows机器是连在H3C的LAN口位置的
3、DNAT策略概述
工作中用的很多,企业用来发布内网的服务器到internet上
3.1、DNAT策略的应用环境
3.2、DNAT策略的原理
🍓[在网关中使用DNAT策略发布内网服务器]🍓
DNAT转换利用的是DNAT映射表
3.3、DNAT策略的实现
🦖[流程图]🦖
🍓[制定规则脚本] 🍓
[root@fttswlp firewall_rule]# cat snat_dnat.sh
#!/bin/bash
# 开启路由功能
echo 1 >/proc/sys/net/ipv4/iP_forward
# 清除filter表和nat表里的防火墙规则
iptables -F
iptables -t nat -F
# 关闭firewalld服务
service firewalld stop
# 设置开机不启动firewalld服务
systemctl diable firewalld
# SNAT策略
# 只要是192.168.70.0网段的出来只会就把它的IP地址换成192.168.0.204
iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens33 -j SNAT --to-source 192.168.0.204
# 对于SNAT策略若是我们不指定改为具体的源地址,可以这样设置。作用和上边哪个命令是一样的
# iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ppp0 -j MASQUERADE
# 这个命令就是表示着用哪个口出去上网就伪装哪个口的IP地址
# dnat
# dnat web
iptable -t nat -A PREROUTING -i ens33 -d 192.168.0.204 -p tcp --dorpt 80 -j DNAT --to-destination 192.168.170.1:80
# dnat mysql
iptable -t nat -A PREROUTING -i ens33 -d 192.168.0.204 -p tcp --dorpt 3306 -j DNAT --to-destination 192.168.170.2:3306
=======================================================================
🍓[大型流程使用docker和mysql结合]🍓
🍓[制定规则]🍓
[root@fttswlp firewall_rule]# cat snat_dnat_v2.sh
#!/bin/bash
# 开启路由功能
echo 1 >/proc/sys/net/ipv4/iP_forward
# 清除filter表和nat表里的防火墙规则
iptables -F
iptables -t nat -F
# 关闭firewalld服务
service firewalld stop
# 设置开机不启动firewalld服务
systemctl diable firewalld
# SNAT策略
# 只要是192.168.70.0网段的出来只会就把它的IP地址换成192.168.0.204
iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens33 -j SNAT --to-source 192.168.0.204
# 对于SNAT策略若是我们不指定改为具体的源地址,可以这样设置。作用和上边哪个命令是一样的
# iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -0 ppp0 -j MASQUERADE
# 这个命令就是表示着用哪个口出去上网就伪装哪个口的IP地址
# dnat
# dnat web
iptable -t nat -A PREROUTING -i ens33 -d 192.168.0.204 -p tcp --dorpt 80 -j DNAT --to-destination 192.168.170.1:80
# dnat mysql 192.168.170.2
iptable -t nat -A PREROUTING -i ens33 -d 192.168.0.204 -p tcp --dorpt 3306 -j DNAT --to-destination 192.168.170.2:3306
# dnat mysql 192.168.170.1 docker
iptable -t nat -A PREROUTING -i ens33 -d 192.168.0.204 -p tcp --dorpt 3309 -j DNAT --to-destination 192.168.170.1:3306
3.3.1、windows里边添加路由
若是不知道到输入命令可以这样
3.4、总结DNAT和SNAT的区别
SNAT解决的问题:是让内网的用户可以通过一个共有IP地址访问互联网;站在用户的角度,帮助用户上网
DNAT解决的问题:把内网的用户发布到外网;站在企业的角度,将服务器发布出去
4、动态路由协议
EGP和IGP。
4.1、IGP,内部网关协议(inner gateway protocol)
用在一个自治系统内部
- rip,只是适合规模比较小的网络,基于跳数来判断衡量一条路由的质量好坏,最多15跳。
- ospf,适合大型的网络,基于开销或者代价的大小(即带宽或者速度的大小)来判断一条路由的质量的好坏。
4.2、EGP外部网关协议(Exterior Gateway Protocol )
外部网关协议(Exterior Gateway Protocol,EGP)是一个在自治系统网络中两个邻近的网关主机(每个都有它们自己的路由)间交换路由信息的协议。EGP常常被用来在英特网的两个主机间交换路由表信息。路由表包括已知的路由器清单、它们能到达的地址以及与每个路由的路径相关的成本度量,以便选出最好的可用路径。
BGP,边界网关协议(Border Gateway Protocol)
5、堡垒机
访问"2233"端口会跳转到跳板机的2233端口上;图片中是一台机器充当firewalld功能,这台机器作为转发数据的,所以我们若是需要转发2233端口,并不需要这台机器上也开启2233端口,只需要跳板机的2233端口开启了就行。
[跳板机实现跳转]