linux网关服务器
问题
多台服务器在内网网段,其中只有一台有公网ip可以上外网,需要让所有服务器都能连接外网
解决思路
使用路由转发的方式,将拥有公网ip的服务器搭建为网关服务器,即作为统一的公网出口
所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这其实就是路由器通常实现的功能。
路由转发原理

首先内网主机向外网主机发送数据包,由于内网主机与外网主机不在同一网段,所以数据包暂时发往内网默认网关GIP处理,而本网段的主机对此数据包不做任何回应。由于内网主机的SIP是私有的,禁止在公网使用,所以必须将数据包的SIP修改成公网上的可用IP,这就是网关收到数据包之后首先要做的事情--IP地址转换,即NAT(Network Address Translation,网络地址转换)。然后网关再把数据包发往外网主机。外网主机收到数据包之后,只认为这是网关发送的请求,并不知道内网主机的存在,更不知道源IP地址是SIP而不是FIP,也没必要知道,目的主机处理完请求,把回应信息发还给网关的FIP。网关收到后,将目的主机返回的数据包的目标IP即FIP修改为发出请求的内网主机的IP地址即SIP,并根据路由表将其发给内网主机。这就是网关的第二个工作--数据包的路由转发。内网主机只要查看数据包的DIP与发送请求的SIP相同,就会回应,这就完成了一次请求。
操作步骤
- 服务器A
操作系统:centos7.6
外网:xxx.xxx.xxx.xxx 网卡ens192
内网:10.12.19.252 网卡ens193
- 服务器B
操作系统:centos6.9
内网:10.12.1.2 网卡eth3
网关服务器A
1、启用IP路由转发功能:
vi /etc/sysctl.conf
将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1
[root@localhost network-scripts]# sysctl -p //查看结果
net.ipv4.ip_forward = 1
2、Centos7默认是使用firewall作为防火墙,关闭firewall,启用iptables
关闭firewall
# 查看firewall状态
$ systemctl status firewalld
# 停止firewall
$ systemctl stop firewalld.service
# 禁止firewall开机启动
$ systemctl disable firewalld.service
关闭selinux(因为当selinux不关闭时,iptables不读取配置文件)
# 编辑配置文件
vi /etc/selinux/config
# 增加以下配置
SELINUX=disabled
# 保存退出
:wq!
# 使配置立即生效
setenforce 0
# 查看当前SELinux状态
getenforce
# 临时关闭SELinux
setenforce 0
# 临时打开SELinux
setenforce 1
启用iptables
# 安装iptables
$ yum install -y iptables-services
# 查询iptables状态
$ systemctl status iptables.service
# 启动iptables防火墙
$ systemctl start iptables.service
# 设置iptables防火墙为开机启动项
$ systemctl enable iptables.service
# 查看iptables的策略
iptables -L -n
3、配置iptables转发规则,保存,重启
iptables -t nat -A POSTROUTING -s 10.12.0.0/16 -j MASQUERADE
service iptables save
systemctl restart iptables
向 NAT 表的 POSTROUTING 链条列尾添加一条规则,规则的具体内容是:
对源 IP 为10.12.0.0/16的数据包做 IP 伪装,从服务器的网卡上,自动获取当前ip地址来做NAT。
PS: MASQUERADE,即地址伪装,算是snat中的一种特例,可以实现自动化的snat。
具体参考https://blog.csdn.net/jk110333/article/details/8229828
https://blog.csdn.net/cooling88/article/details/51040054
当然也可以直接修改 vi /etc/sysconfig/iptables
vi /etc/sysconfig/iptables -A POSTROUTING -s 10.12.0.0/16 -j MASQUERADE
内网服务器B
修改eth3网卡的网关为网关服务器的地址
vi /etc/sysconfig/network-scripts/ifcfg-eth3
增加:GATEWAY=10.12.19.252
重启网络服务
service network restart
ifup eth3
最后随便ping一个网址验证下,此时服务器B已经可以上外网
参考:https://blog.51cto.com/13683137989/1880744
https://blog.csdn.net/u013177446/article/details/53996037
linux网关服务器的更多相关文章
- 干货|Linux平台搭建网关服务器
概述 集群中一共10台服务器组成了局域网环境,但其中只有一台有外网网卡可以访问互联网.现要求另外9台服务器通过这台主机进行互联网访问. 实验环境介绍 利用iptables搭建网关服务器,即通过SNA ...
- linux+iptables搭建网关服务器
公司购买的一批云服务器只带内网,配置了一个负载均衡器(lb),这批服务器通过lb可以对外提供服务,但是这批服务器不能主动连接外网,例如使用wget下载文件,或者curl访问ttlsa.com站点. 额 ...
- Linux生产服务器Shell脚本分享
Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...
- Linux 高性能服务器编程——IP协议详解
1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的. ...
- CentOS 7配置成网关服务器
其实在Linux下配置网关服务器很简单,如果配置好之后出现无法访问外网的情况,那么可以排查以下情况: 1.防火墙和iptables的服务关掉(firewalld.iptables) 2.清空iptab ...
- Windows上管理远程Linux VPS/服务器文件工具 - winscp
Linux上经常会经常需要编辑文件,特别是Linux VPS/服务器安装好系统之后配置环境会需要修改很多的配置文件等,对于常用Linux的基本上都能够熟练使用vi或者nano等SSH下面的文件编辑工具 ...
- Linux邮件服务器架构
// 上面的过程只是实现了简单的本地用户的文件发送功能,只需要安装mailutil,不需要安装配置sendmail,看鸟哥的Linux私房菜中写的应该是本地用户发送邮件不需要sendmail.只有当非 ...
- Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw
负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...
- linux web服务器静态资源的处理 unison+inotify双向同步
linux web服务器静态资源的处理 unison+inotify双向同步 http://monkeyzhu.blog.51cto.com/5764358/1324391 简介 unison可以使两 ...
随机推荐
- 11g RAC开启归档模式
1.关闭集群数据库 [oracle@rac01-+ASM1 ~]$ srvctl stop database -d rac 2.开启节点一数据库到mount状态 SQL> startup mou ...
- 使用Spark的newAPIHadoopRDD接口访问有kerberos认证的hbase
使用newAPIHadoopRDD接口访问hbase数据,网上有很多可以参考的例子,但是由于环境使用了kerberos安全加固,spark使用有kerberos认证的hbase,网上的参考资料不多,访 ...
- [日常摸鱼]bzoj3083遥远的国度-树链剖分
一无聊就找树剖写 题意:一颗带点权的树,三种操作:1.换根 2.链赋值 3.查询子树最小值 如果没有换根的话直接就是裸的树剖了,对于换根的操作我们可以分类讨论. 1.如果查询的$x$就是根,那答案就是 ...
- Flink开发中的问题
1. 流与批处理的区别 流处理系统 流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理. 批处理系统 批处理系统, ...
- Helm 带你飞
文章目录 目录 文章目录 在没使用 Helm之前,向 K8S部署应用,我们要依次部署 deployment. svc 等,步骤较繁琐.况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复 ...
- 一文搞懂 CountDownLatch 用法和源码!
CountDownLatch 是多线程控制的一种工具,它被称为 门阀. 计数器或者 闭锁.这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用).下面我们就来一起 ...
- ThreadX——IPC应用之消息队列
作者:zzssdd2 E-mail:zzssdd2@foxmail.com 一.应用简介 消息队列是RTOS中常用的一种数据通信方式,常用于任务与任务之间或是中断与任务之间的数据传递.在裸机系统中我们 ...
- Python爬取跑男的评论,看看大家都在看谁吧
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python,作者: J哥 Python爬取爬取腾讯视频弹幕视频讲解 http ...
- mac 清理磁盘空间
128G mac真的用的很崩溃,发现系统占用80G ,肯定是有问题的,发现了是缓存的原因,删除后好多了,记录一下. 从管理里进入之后,从文稿中选择"文件浏览器"可以看到每一个文件夹 ...
- jdbc编程学习(1)
一,背景 1996年,sun公司发布了第一版本的数据库连接(JDBC)API,使编程人员可以通过这个API接口连接到数据库,并使用结构化查询语言(SQL)完成对数据库的查找与更新.JDBC自此成为Ja ...