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

文章目录

  • 物理条件
    • 方法一:不使用交换机
    • 方法二:使用交换机
  • 配置步骤
    • 查看网络状态
    • 设置静态IP
    • 将服务器A设置成网关
    • 重新启动各服务器网卡
    • 设置主机名
  • 将一台CentOS的网关设置为服务器A
  • 补充
    • ubuntu 域名解析暂时失败
  • 参考资料

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

物理条件

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

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

方法一:不使用交换机

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

方法二:使用交换机

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

配置步骤

查看网络状态

使用 ifconfig 查看服务器 A 当前的网络设备信息。
Linux ifconfig命令 _ 菜鸟教程.html
使用可上网的服务器作为网关,实现另一台服务器上网_第1张图片

设置静态IP

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

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

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

修改前:
使用可上网的服务器作为网关,实现另一台服务器上网_第2张图片
修改后:
使用可上网的服务器作为网关,实现另一台服务器上网_第3张图片

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

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

将服务器 B 的 01-network-manager-all.yaml 中内容修改成如下内容:
使用可上网的服务器作为网关,实现另一台服务器上网_第6张图片
将 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

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

使用可上网的服务器作为网关,实现另一台服务器上网_第7张图片
(上面多余的是刚开始写错了。。。)

重新启动各服务器网卡

sudo service networking restart

此后,不出意外的话,两台服务器之间应该就可以通过 IP 相互 ping 通了。
使用可上网的服务器作为网关,实现另一台服务器上网_第8张图片
使用可上网的服务器作为网关,实现另一台服务器上网_第9张图片

设置主机名

我不想记住复杂的 IP 地址,所以想给每个服务器设置一个主机名,也很简单啦,只需要修改各个服务器的 /etc/hosts 文件。
使用可上网的服务器作为网关,实现另一台服务器上网_第10张图片

使用可上网的服务器作为网关,实现另一台服务器上网_第11张图片

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

将一台CentOS的网关设置为服务器A

先查看一下目前的网络信息。

ifconfig

使用可上网的服务器作为网关,实现另一台服务器上网_第12张图片
使用 ifconfig 找到该服务器接入局域网的网卡是 em4。

在路径 /etc/sysconfig/network-scripts 下可以找到相关的配置文件。

cd /etc/sysconfig/network-scripts
ll

使用可上网的服务器作为网关,实现另一台服务器上网_第13张图片

修改文件 ifcfg-em4 的内容,将 GATEWAY 字段修改为 局域网中网关的 IP。
使用可上网的服务器作为网关,实现另一台服务器上网_第14张图片
保存后,使用

service network restart

重启网络
在这里插入图片描述
尽管从上图信息看,好像失败了,但是——
ping 了一下百度发现可以 ping 通,就算了搞定了!
使用可上网的服务器作为网关,实现另一台服务器上网_第15张图片

补充

ubuntu 域名解析暂时失败

Ubuntu通过修改配置文件进行网络配置及ubuntu解决resolv.conf被重写问题和NetworkManager的关系

在这里插入图片描述
可以使用

sudo vi /etc/resolv.conf

来修改 DNS 配置文件,添加 nameserver 8.8.8.8
注意这个修改这个配置文件后就可以 ping www.baidu.com 了,如果使用 service networking restart 来重启网络配置的话会导致这个配置文件被重写。


参考资料

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


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

你可能感兴趣的:(Linux,服务器,linux,运维,局域网,网关)