文章目录
- 物理条件
- 方法一:不使用交换机
- 方法二:使用交换机
- 配置步骤
- 查看网络状态
- 设置静态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