使用可上网的服务器作为网关,实现另一台服务器上网

news/2025/2/28 17:19:53/

文章目录

  • 物理条件
    • 方法一:不使用交换机
    • 方法二:使用交换机
  • 配置步骤
    • 查看网络状态
    • 设置静态IP
    • 将服务器A设置成网关
    • 重新启动各服务器网卡
    • 设置主机名
  • 参考资料

本文的目标是利用一台可以上网的服务器作为网关,使在同一局域网中的所有服务器都可以上网。

物理条件

假设有若干台服务器:A,B,C,D…
其中服务器 A 可以上网

现在的需求是——我想让B,C,D也可以上网,具体来说有两种网线连接的方法。

方法一:不使用交换机

如果不使用交换机,需要用网线将服务器 A 和 B 直接连接起来。由于每台主机的网卡口有限,因此这种方法只适用于没有交换机且服务器个数不多的情况。

方法二:使用交换机

使用交换机就会简单很多,只需要将所有需要上网的服务器通过网线连接在交换机上就好了。

配置步骤

查看网络状态

使用 ifconfig 查看服务器 A 当前的网络设备信息。
Linux ifconfig命令 _ 菜鸟教程.html
在这里插入图片描述

设置静态IP

Ubuntu设置静态IP地址的几种方法

搜到的文章中有两种方式,可以两种方式都试试,(在本人的实操中,一部分服务器已经存在 interfaces 文件,就在此基础上进行修改;另外一部分服务器则是修改 /etc/netplan 文件夹下的文件)

对服务器 A 进行如下操作:
在这里插入图片描述

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

其实只修改了 address 字段的内容,将其设置成了我想要的静态 IP 地址。

在对服务器 B 进行对应的操作时,发现 /etc/network 文件夹下并没有 interfaces 文件存在。
在这里插入图片描述
因此尝试攻略中的另一个方法,查看 /etc/netplan 文件夹下是否有相关的配置文件,发现果然有!
在这里插入图片描述
(补充一下,服务器 A 的 /etc/netplan 下内容是这样的:
在这里插入图片描述

将服务器 B 的 01-network-manager-all.yaml 中内容修改成如下内容:
在这里插入图片描述
将 addresses 设置成了 [192.168.232.106/24] ,即本机在局域网中的 ip;除此之外将 gateway4 字段设置成了服务器 A 在局域网中的 IP:192.168.232.105。

将服务器A设置成网关

Ubuntu将本机作为局域网内其他PC的网关,使局域网内机器可通过本机上网

echo 1 > /proc/sys/net/ipv4/ip_forward

想要永久生效的话,可以修改 /etc/sysctl.conf 如下:
在这里插入图片描述
就是在最后一行添加了 net.ipv4.ip_forward=1
执行 sysctl -p 马上生效

sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.232.0/24 -o eno1 -j MASQUERADE 

注意这里的应该写为 192.168.232.0 ,而不是服务器 A 的 IP 192.168.232.105。

这里应该写服务器 A 用于上网的网卡 eno1 而不是连接局域网的网卡 eno2。

配置完成后需要使用

sudo iptables-save

来保存配置,同时也可以看到相应的结果:

在这里插入图片描述
(上面多余的是刚开始写错了。。。)

重新启动各服务器网卡

sudo service networking restart

此后,不出意外的话,两台服务器之间应该就可以通过 IP 相互 ping 通了。
在这里插入图片描述
在这里插入图片描述

设置主机名

我不想记住复杂的 IP 地址,所以想给每个服务器设置一个主机名,也很简单啦,只需要修改各个服务器的 /etc/hosts 文件。
在这里插入图片描述

在这里插入图片描述

分别在两者的 hosts 文件中添加对方的局域网 IP 和主机名就好了。


参考资料

Ubuntu设置静态IP地址的几种方法
ubuntu如何重新启动网卡
Ubuntu将本机作为局域网内其他PC的网关,使局域网内机器可通过本机上网


Ubuntu20.04服务器开启路由转发让局域网内其他电脑通过该服务器连接外网
ubuntu配置iptables


http://www.ppmy.cn/news/230329.html

相关文章

SpringBoot项目使用自带的@Async异步处理功能实现业务逻辑的异步调用

SpringBoot项目使用自带的Async异步处理功能实现业务逻辑的异步调用 物料准备: 1.配置启用SpringBoot内置的EnableAsync功能 2.定义async任务执行需要的线程池配置 3.定义具体的async方法,可以是无返回值的void方法,也可以是有返回值的方…

数据库期末复习(9.1)故障恢复到检查点之前

故障的分类 事务故障 系统故障 存储介质故障 只能通过故障来实现. 故障恢复 缓冲池策略 STEAL和FORCE策略:具体内容见课件。 为啥要使用steal和force两种策略 原因:如果不用steal策略 缓冲区就会有大量的脏页,如果使用not force策略 由于对同一个对…

Linux - 第24节 - Linux高级IO(二)

1.I/O多路转接之select 1.1.select初识 select是系统提供的一个多路转接接口。 • select系统调用可以让我们的程序同时监视多个文件描述符的上的事件是否就绪。 • select的核心工作就是等,当监视的多个文件描述符中有一个或多个事件就绪时,select才会…

22.11.21

C语言习题一张 被高数和线代折磨的一天,破防了,欠的债还没还清。 今天12点前睡,调整作息

12121212

第一章 操作系统引论 1.1 操作系统的目标和作用 1.1.1 操作系统的主要目标 方便性、有效性、可扩充性、开放性。 1)方便性:配置了OS的计算机系统,使得计算机变得易学易用。 2)有效性:有两层含义。第第一层是提高系…