本文的目标是利用一台可以上网的服务器作为网关,使在同一局域网中的所有服务器都可以上网。
假设有若干台服务器:A,B,C,D…
其中服务器 A 可以上网。
现在的需求是——我想让B,C,D也可以上网,具体来说有两种网线连接的方法。
如果不使用交换机,需要用网线将服务器 A 和 B 直接连接起来。由于每台主机的网卡口有限,因此这种方法只适用于没有交换机且服务器个数不多的情况。
使用交换机就会简单很多,只需要将所有需要上网的服务器通过网线连接在交换机上就好了。
使用 ifconfig
查看服务器 A 当前的网络设备信息。
Linux ifconfig命令 _ 菜鸟教程.html
Ubuntu设置静态IP地址的几种方法
搜到的文章中有两种方式,可以两种方式都试试,(在本人的实操中,一部分服务器已经存在 interfaces 文件,就在此基础上进行修改;另外一部分服务器则是修改 /etc/netplan
文件夹下的文件)
其实只修改了 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。
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 和主机名就好了。
先查看一下目前的网络信息。
ifconfig
使用 ifconfig
找到该服务器接入局域网的网卡是 em4。
在路径 /etc/sysconfig/network-scripts
下可以找到相关的配置文件。
cd /etc/sysconfig/network-scripts
ll
修改文件 ifcfg-em4 的内容,将 GATEWAY 字段修改为 局域网中网关的 IP。
保存后,使用
service network restart
重启网络
尽管从上图信息看,好像失败了,但是——
ping 了一下百度发现可以 ping 通,就算了搞定了!
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