当前位置: 首页 > news >正文

Linux运维新手的修炼手扎之第29天

iptables防火墙和lvs

1 网络防火墙:(站在请求数据包角度,判断是SNAT/DNAT)
动作:SNAT 源地址转换,修改请求报文中的源IP地址(一对多-将多个内网IP映射到多个公网IP-家里内网主机共享公网IP访问互联网-自动维护路径无需显式回程路由)  -j SNAT --to-source

                iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j SNAT --to-source 192.168.8.13
#SNAT指定的多个出口IP地址,默认使用的是第一个IP地址,-o指定出口网络设备
iptables -t nat -R POSTROUTING 1 -s 10.0.0.0/24 ! -d 10.0.0.0/24 -o ens37 -j SNAT --to-source 192.168.8.123-192.168.8.125
#SNAT指定转发端口,只转换tcp协议目标端口为80的报文,且通过12345端口向外访问
iptables -t nat -R POSTROUTING 1 -s 10.0.0.0/24 ! -d 10.0.0.0/24 -o ens37 -p tcp --dport 80 -j SNAT --to-source 192.168.8.13:12345
#用MASQUERADE(自动将内网主机的源IP动态伪装为当前出口接口的公网IP,适用于动态IP环境)设置SNAT转发
iptables -t nat -R POSTROUTING 1 -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE

DNAT 目标地址转换,修改响应报文中的目标IP地址(一对一-将一个公网IP精确映射到一个内网IP-公司内网服务器对外提供服务-需显式回程路由) -j DNAT --to-destination     

                iptables -t nat -A PREROUTING -d 10.0.0.13 -p tcp --dport 80 -j DNAT --to-destination 192.168.8.14:80
iptables -t nat -A PREROUTING -d 10.0.0.13 -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
[每个服务(如Web/SSH/RDP)可能对应不同的内网IP和端口,需明确指定]

REDIRECT 重定向,将收到的数据包转发至同一主机的不同端口
iptables -t nat -A PREROUTING -d 192.168.8.14 -p tcp --dport 67 -j REDIRECT --to-ports 80

2 iptables自定义链-必须附加在默认链上才管用-N 新建、-E 改名、-X 删除
#创建一个新的自定义链,名称是SSH_CHAIN
iptables -t filter -N SSH_CHAIN
#向新的SSH_CHAIN链中,增加一条规则
iptables -t filter -A SSH_CHAIN -p tcp --dport 22 -j ACCEPT
#关联系统链INPUT
iptables -t filter -I INPUT 3 -j SSH_CHAIN
#iptables -F只能清空规则,并不会删除自定义链,删除自定义链
iptables -t filter -X SSH_CHAIN
#自定义链改名
iptables -E web-chain WEB-CHAIN

3 LVS
定位:负载均衡--高扩展集群的核心组件--负载调度器(load balancer),负责将客户的请求调度到后端主机上
企业内部大型业务场景下,lvs集群样式经常表现为LVS四层负载【port】 + Nginx七层负载【协议数据】

        软件:nginx两个独立的连接,lvs一个独立的连接,建立在iptables基础之上

        术语:CIP-客户端的真实IP地址、VIP-虚拟IP地址,对外提供服务的统一入口、DIP-负载均衡调度器(Director)的物理IP、RIP-后端真实服务器的IP地址、DS-负载均衡调度器(如LVS、Nginx、HAProxy)、RS-后端真实服务器

【注:为了达到不同网段的ip地址能够达到正常的通信,需要开启linux服务的ip转发功能方法一:在 vim /etc/sysctl.conf中开启功能net.ipv4.ip_forward = 1;sysctl -p(生效)方法二:直接修改ip_forward文件echo 1 > /proc/sys/net/ipv4/ip_forward 】
安装lvs软件:apt | yum install ipvsadm -y集群命令:	#集群状态查看 ipvsadm -Ln (-L显示当前的服务或者目标主机信息 -n地址和端口已数字形式显示)#添加集群 ipvsadm -A -t(tcp)|-u(udp)|-f(防火墙自定义规则的标记,默认是数字) vip:port [-s 调度策略默认wlc] [-p 空闲超时时间]ipvsadm -A -t 192.168.8.14:80#编辑集群 ipvsadm -Eipvsadm -E -t 192.168.8.14:80 -s lc#删除集群 ipvsadm -D删除指定lvs集群 ipvsadm -C删除所有lvs集群ipvsadm -D -t 192.168.8.14:80ipvsadm -C主机命令:#添加主机 ipvsadm -a(给lvs集群增加一个真实主机RS) -t vip:port -r(指定真实主机的地址信息,port可省略,端口默认80) Rip:port -g(默认DR模式)|m(NAT模式)|i(TUN模式) -w(指定真实主机的权重信息)ipvsadm -a -t 192.168.8.14:80 -r 192.168.8.16(端口默认80)ipvsadm -a -t 192.168.8.14:80 -r 192.168.8.15:88 -m(指定真实主机端口只有-m才能生效,否则都使用默认的80端口) -w 3#编辑主机 ipvsadm -eipvsadm -e -t 192.168.8.14:80 -r 192.168.8.16:80 -m(转换成NAT模式,如果想让Rs主机的模式从NAT模式转换为其他模式的话,无法直接修改,只能先删后增)#删除主机 ipvsadm -dipvsadm -d  -t 192.168.8.14:80 -r 192.168.8.15:88规则命令:#保存规则 ipvsadm-save -n > n-ipvsadm#查看规则 cat n-ipvsadm#导入规则 ipvsadm-restore < n-ipvsadm
防火墙标识:①#使用iptables定义防火墙标记iptables -t mangle -A PREROUTING -d 192.168.8.13 -p tcp -m multiport --dports 
80,443 -j MARK --set-mark 10②#定制集群规则ipvsadm -A -f 10 -s rripvsadm -a -f 10 -r 192.168.8.7 -gipvsadm -a -f 10 -r 192.168.8.17 -g	

模型:NAT[LVS会修改数据包的目标IP(DNAT)和源IP(SNAT),请求和响应流量都经过 LVS 调度器,所有的RS的出口应该指向lvs主机,lvs主机内部开启内核参数,实现数据包的转发能力net.ipv4.ip_forward = 1]-m:NAT模式(Masquerade)
DR[LVS服务器和RS服务器上都配置有VIP地址必须在同一网段,RS服务器VIP地址附加到lo上,LVS不修改IP头(CIP->VIP | VIP->CIP),仅修改MAC地址,RS直接响应客户端(不经过LVS)二层转发]-g(或默认不指定):DR 模式(Direct Routing)
TUN[LVS通过IP隧道(IPIP封装)将请求转发给RS,RS解包后直接响应客户端(响应不经过LVS),RS和LVS可在不同网络]-i:TUN 模式(IP Tunneling)

调度:静态算法仅根据算法本身来进行调度,不关注后端RS服务器负载情况[RR轮询、WRR加权轮询、SH源IP地址hash(同一个IP地址的客户端请求调度到后端同一台RS服务器上,从而实现会话保持)]
动态算法要根据当前系统中后端RS服务器的负载情况进行调度,给负载较低的后端主机多转发,给负载较高的后端主机少转发[LC最少连接算法、WLC加权最少连接算法]

http://www.dtcms.com/a/333344.html

相关文章:

  • C++中的适配器模式:灵活应对接口不兼容问题
  • JSX 与 JavaScript 的关系:从语法糖到生态系统
  • JavaWeb 欢迎页设置详解
  • 从 “碳足迹“ 到 “零碳圈“:上海零碳园区的改造密码
  • 容器技术:轻量虚拟化的未来
  • 状态流程框架(cola-component-statemachine)
  • 基于机器视觉的车道线检测与跟踪关键技术研究
  • GitHub 上 Star 数量前 18 的开源 AI Agent 项目
  • k8s注意事项
  • el-tree 编辑后保持现有展开状态
  • 【多模态大模型】--BLIP3
  • Backblaze 2025 Q2硬盘故障率报告解读
  • [TryHackMe](知识学习)缓冲区溢出
  • week1-[顺序结构]大海
  • 继续记录面试题
  • 优维HAO案例:某金融机构CMDB升级改造项目
  • Linux学习-软件编程(进程与线程)
  • 前端基础知识版本控制系列 - 01( 对版本管理的理解)
  • 基于 AutoGen 框架实现 - 电商客服订单处理演示
  • 【Java虚拟机】垃圾回收机制
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.15
  • 安全防范方案
  • 网络安全蓝队常用工具全景与实战指南
  • 从C到C++入门:C++有而C语言没有的基础知识总结
  • 机器学习之 KNN 算法学习总结
  • CK_Label_v51(外接供电版)
  • C#WPF实战出真汁07--【系统设置】--菜品类型设置
  • OpenCV---morphologyEx形态学操作
  • MCP Server Java 开发框架的体验比较(spring ai mcp 和 solon ai mcp)和实现示例对比
  • Linux网络基础概念