centos系统配置转发和iptables使之成为网关

centos系统配置转发和iptables使之成为网关

在当下互联网环境中,有很多内网服务器不能出网,例如安装软件包,更新程序之类的,偶尔会需要出网,下面这种方式就是专门解决这个事情的。
如下配置在 centos 6 7 8 rocky 8 9 都生效
前提是内网环境中是有一台可以出网的服务器。
前期准备
yum install -y epel-release
yum -y install net-tools vim lrzsz wget git  yum-utils telnet  unzip tar iptables-services lm_sensors gcc make

关闭firewalld防火墙及selinux

systemctl disable --now firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
配置如下,很简单
找到当前可以出网的那一台服务器
在其服务器上配置
参数优化

vim /etc/sysctl.conf
# 一下这些设置一般用于高负载环境中,比如高并发的Web服务器或数据库服务器,
# 以优化性能和提高系统稳定性。调整这些参数时需要根据具体的使用场景和负载情况进行测试和优化。

net.ipv4.ip_forward = 1
# 启用IPv4数据包转发,通常用于路由器或网关。

net.ipv4.conf.default.rp_filter = 1
# 启用逆向路径过滤,以防止伪造源地址的IP包。

net.ipv4.conf.default.accept_source_route = 0
# 禁用源路由,这样就不会接受源路由数据包。

net.ipv4.tcp_syncookies = 1
# 启用TCP同步 cookies,以防止SYN洪水攻击。

net.ipv4.tcp_tw_reuse = 1	
# 允许重新使用TIME_WAIT状态的TCP连接,以减少资源消耗。

net.ipv4.tcp_tw_recycle = 0
# 禁用TIME_WAIT状态的TCP连接回收,因为它可能会导致NAT环境中的连接问题(该参数在较新的Linux内核中已被弃用)。

net.ipv4.tcp_fin_timeout = 30
# 设置TCP连接的FIN_WAIT2状态超时时间为30秒。

net.ipv4.tcp_keepalive_time = 30
# 设置TCP连接的Keepalive探测时间为30秒,以检测连接的健康状态。

net.ipv4.ip_local_port_range = 2048 65000
# 设置本地端口的范围,供客户端使用的端口号范围从2048到65000。

net.ipv4.tcp_max_syn_backlog = 65536
# 增加TCP SYN队列的最大长度,以防止SYN洪水攻击。

net.ipv4.tcp_mem = 94500000 915000000 927000000
# 设置TCP内存参数,用于调整TCP缓存的大小。这三个值分别表示低水位、中水位和高水位。

net.ipv4.tcp_max_orphans = 3276800
# 设置最大孤儿连接数(即没有任何用户进程处理的连接)。

net.netfilter.nf_conntrack_max = 2097152
# 设置Netfilter连接跟踪表的最大条目数,影响NAT和防火墙的性能。

#####  内核和系统资源相关配置

kernel.sysrq = 0
# 禁用SysRq(系统请求)键,这是一种通过特定的键盘快捷键触发内核功能的方式。

kernel.core_uses_pid = 1
# 启用内核使用PID(进程ID)作为core dump文件的前缀,以便更容易识别core文件来源的进程。

kernel.msgmnb = 65536
# 设置消息队列的最大字节数。

kernel.msgmax = 65536
# 设置消息队列中单个消息的最大字节数。

kernel.shmmax = 68719476736
# 设置共享内存段的最大字节数(64GB)。

kernel.shmall = 4294967296
# 设置系统中共享内存页的最大总数。

fs.file-max = 655350
# 设置系统可以打开的最大文件描述符数量。

vm.overcommit_memory = 1
# 设置内存超分配策略,使系统总是允许超分配内存(尽管实际使用情况可能会导致OOM(内存不足))。

vm.max_map_count = 262144
# 设置每个进程可以拥有的最大内存映射区域数。

##### 网络缓冲区和队列相关配置

net.core.netdev_max_backlog = 32768
# 设置网络设备接收队列的最大长度,以提高网络吞吐量。

net.core.somaxconn = 32768
# 设置每个端口上允许的最大连接队列长度,以提高网络服务的并发能力。

net.core.wmem_default = 8388608
# 设置网络套接字发送缓冲区的默认大小(8MB)。

net.core.rmem_default = 8388608
# 设置网络套接字接收缓冲区的默认大小(8MB)。

net.core.rmem_max = 16777216
# 设置网络套接字接收缓冲区的最大大小(16MB)。

net.core.wmem_max = 16777216
# 设置网络套接字发送缓冲区的最大大小(16MB)。

net.ipv4.tcp_synack_retries = 1
# 设置TCP连接的SYN-ACK重试次数,减少连接建立时间。

net.ipv4.tcp_syn_retries = 1
# 设置TCP连接的SYN重试次数,减少连接建立时间。

在这里插入图片描述

修改配置使得当前的Linux系统可以作为路由器,转发经过的IPv4数据包
echo "1" >/proc/sys/net/ipv4/ip_forward
将IPv4数据包转发功能启用。设置为 1 表示允许数据包转发;如果设置为 0,则禁止数据包转发。

/proc/sys/net/ipv4/ip_forward
一个用于控制Linux内核参数的虚拟文件,专门用于配置IPv4数据包转发功能。
修改iptables配置
vim /etc/sysconfig/iptables

新增
*nat
:PREROUTING ACCEPT [1933951542:108342552632]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [2340407104:140430495260]
-A POSTROUTING -o ens33 -j MASQUERADE
COMMIT

注释掉
# 这条规则的作用是拒绝所有经过本机的转发流量
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited

# 确保 ens33 是系统中存在的网络接口。使用 ip a 命令确认接口名称,改为自己的

在这里插入图片描述
在这里插入图片描述

重启 iptables
systemctl restart iptables

当前能出网的服务器IP,以上配置都是在这台配置

在这里插入图片描述

需要出网的内网服务器IP

在这里插入图片描述
在这里插入图片描述

大功告成! 完结撒花

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/871110.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

期权的集合竞价是什么?期权集合竞价时间分享

今天带你了解期权的集合竞价是什么?期权集合竞价时间分享。期权的集合竞价是指在交易日的特定时间段内,期权合约的买卖双方提交并匹配他们的买卖意愿,以确定期权的开盘价格。 期权的集合竞价是一种特定的交易机制,用于确定期权合…

位图与布隆过滤器 —— 海量数据处理

🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 位图 一: 🔥 位图概念 二: 🔥 位图的实现思路及代码实现三: 🔥 位图的应用四:…

文书智能助手

背景 司法、医疗等行业存在着大量的文书,一份文书或者卷宗少则几十页,多则几万页。在查看和检查这些文书时,会遇到大量的信息。当需要查询进一步的详细内容时,往往需要选择一下文字,然后再在各种系统中 查询详细的信息…

IDEA安装和使用(配图)

功能强大: 1、强大的整合能力,比如Git,Maven,Spring等 2、开箱即用(集成版本控制系统,多语言支持的框架随时可用) 3、符合人体工程学 1、高度智能 2、提示功能的快速,便捷,范围广 3、好用…

Nginx平滑升级与回滚示例

Nginx 的平滑升级和平滑回滚是确保 Web 服务高可用性的重要组成部分。这两种操作允许你在不中断服务的情况下更新或回滚 Nginx 的版本。 Nginx 平滑升级与回滚 Nginx 的平滑升级和平滑回滚是确保 Web 服务高可用性的重要组成部分。这两种操作允许你在不中断服务的情况下更新或…

Vue 生命周期详解含demo、面试常问问题案例

Vue 生命周期详解、面试常问问题案例 含 demo 文章目录 Vue 生命周期详解、面试常问问题案例 含 demo一、Vue 生命周期是什么二、Vue 中如何使用生命周期钩子1. **beforeCreate**2. **created**3. **beforeMount**4. **mounted**5. **beforeUpdate**6. **updated**7. **beforeD…

AIoTedge边缘计算平台V1.0版本发布

AIoTedge边缘计算平台V1.0,一款创新的AIoT解决方案,现已正式发布。该产品集成了NodeRED软网关、边缘物联网平台和边缘AI能力,为企业提供强大的边云协同能力。它支持设备管理和泛协议接入,确保不同设备间的无缝连接。AIoTedgeV1.0还…

Hexo通过GitHub设置自定义域名

本身GitHub也是支持自定义域名的,本次教程将讲解如何使用GitHub自带的自定义域名解析。 1. GitHub设置 1.1 登录GitHub账号 登录GitHub账号,找到名称为 用户名.github.io的仓库,并点击进入。 1.2 进入Settings页面 点击如图的Settings按…

https://developer.nvidia.com/cuda-toolkit-archive

CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive

一款免费的文件锁定占用解除工具,绿色免安装版

IObit Unlocker是一款由IObit公司开发的免费文件解锁工具,旨在解决用户在删除、重命名、移动或复制文件和文件夹时遇到的“无法删除”或“访问被拒绝”的问题。该软件体积小巧,不到3MB,非常易于使用,并且不需要安装,可…

代码随想录 day 49 单调栈

第十章 单调栈part02 42. 接雨水 接雨水这道题目是 面试中特别高频的一道题,也是单调栈 应用的题目,大家好好做做。 建议是掌握 双指针 和单调栈,因为在面试中 写出单调栈可能 有点难度,但双指针思路更直接一些。 在时间紧张的情…

volta引发的血案

什么是volta volta用于做项目级别的node版本控制,当手头上的项目有多个时,且node版本可能还不一样,我们需要不断切换node版本。使用volta可以很好的解决这个问题。只需要安装volta,然后在下面的package.json中配置好node版本即可…

初始redis:List

列表 List 相当于数组或者顺序表。 对于List来说,两侧都可以插入和删除,时间复杂度是O(1)。 有很多的操作,比如 llen 可以获取List的长度,lrem 可以删除元素 ,lrange可以去一个字符串 , lindex可以根据下标…

P38-数据存储1

百度2015年系统工程师笔试题 编程题 编程题 编程题 编程题

JUC- Synchronized原理

对象头概念 以 32 位虚拟机为例 Klass Word:指向类对象的指针,标明这个对象的类型 普通对象 |--------------------------------------------------------------| | Object Header (64 bits) | |---------------…

BI分析实操案例分享:零售企业如何利用BI工具对销售数据进行分析?

在当下这个竞争激烈的零售市场,企业如何在波诡云谲的商场中站稳脚跟,实现销售目标的翻倍增长? 答案可能就藏在那些看似杂乱无章的数字里。 是的,你没有看错,答案正是那些我们日常接触的销售数据。它们就像是宝藏&…

设计模式(单例模式、工厂模式、建造者模式、代理模式)

设计模式是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案(设计思想、设计经验)。 一、六大原则 1、单一职责原则&#…

C语言--01基础数据类型

1.整型 概念:表达整数类型的数据语法: int a 123; // 定义了一个专门用来存储整数的变量a a 456 ; 需要注意的地方: int 的本意是 integer,即整数的意思int a 代表在内存中开辟一块小区域,称为 a,用来…

ado.net 操作sqlite

新建控制台项目 安装nuget包Microsoft.Data.Sqlite 数据库名字和链接 string dbName "test.db"; SqliteConnection? connection null; try {//创建链接connection new SqliteConnection($"Data Source{dbName}");//打开链接connection.Open(); } ca…

【Hot100】LeetCode—160. 相交链表

目录 1- 思路思路 2- 实现⭐160. 相交链表——题解思路 3- ACM 实现 原题连接:160. 相交链表 1- 思路 思路 首先想要找到相交点,需要定义连个指针。两个指针一定得是同步的,例如 A 链表 [1,2,3,4,5] ,链表 B 是 [4,5] 1- 指针对…