如何在 Ubuntu 上配置 NAT
NAT 或网络地址转换允许专用网络上的多台计算机共享公共 IP 来访问 Internet。一组 IP 地址在组织内部使用,另一组用于组织向互联网展示自己。这有助于节省有限的公共 IP 空间。同时,它还通过隐藏内部网络以防止外界直接访问来提供安全性。
NAT 如何工作?
NAT 只是将传出数据包的源地址转换为公共 IP 地址,使其可在 Internet 上路由。以同样的方式,来自外部(互联网)的响应数据包的源地址被转换回本地或私有IP地址。
我们将涵盖哪些内容?
在本指南中,我们将学习如何将 Ubuntu 20.04 设置为 NAT 路由器。为此,我们将使用 Ubuntu VM 作为 NAT 路由器,并使用另一个 Ubuntu VM 作为客户端 VM 进行测试。为了测试设置,我们使用 Virtualbox 来创建和管理虚拟机 (VM)。
飞行前检查
两台 Ubuntu VM,其中一台具有两个网络接口 (NIC)。
两个虚拟机上均安装了 Ubuntu 20.04。
两个虚拟机上的管理 (sudo) 访问权限。
实验装置
我们对上述两个虚拟机使用了以下设置:
1. VM1(NAT 路由器):我们的路由器机器有两个网络接口:enp0s3 和 enp0s8(这些名称可能因系统而异)。 enp0s3 接口充当 WAN(互联网)接口,可从外部世界(互联网)访问。它的 IP 地址是通过 DHCP 分配的,在我们的例子中是 192.168.11.201。
enp0s8 接口是本地或 LAN 接口,只能在部署客户端的本地网络上访问。我们手动将该接口的IP地址设置为10.10.10.1/24,并且“网关地址留空”。
2. VM2(客户端计算机):客户端计算机只有一个本地或 LAN 接口,即 enp0s3。它连接到上述计算机 (VM2) 的本地网络,IP 地址设置为 10.10.10.3/24。唯一需要注意的是,本例中的网关是上述计算机 (VM2) 的本地接口 (enp0s8) IP 地址,即 10.10.10.1
下表给出了两个虚拟机的配置摘要:
Interface Name → | enp0s3 | enp0s8 | ||
---|---|---|---|---|
VM Name ↓ | IP address | Gateway IP | IP address | Gateway IP |
VM1(NAT Router ) | 192.168.11.201/24 | Via DHCP | 10.10.10.1/24 | |
VM2(Client) | 10.10.10.3/24 | 10.10.10.1 |
让我们开始…
现在我们已经在机器上设置了所需的 IP 地址,接下来就可以配置它们了。让我们首先检查这些机器之间的连接性。两台机器应该能够互相 ping 通。 VM1 是我们的 NAT 路由器机器,它应该能够访问全球互联网,因为它通过 enp0s3 连接到 WAN。 VM2 是我们的本地客户端计算机,在我们在 VM1 上配置 NAT 路由器之前,它应该无法访问互联网。现在,请按照以下步骤操作:
步骤 1. 首先使用以下命令检查两台计算机上的 IP 地址:
步骤 2. 在配置 NAT 路由器之前,还要检查计算机的连接性,如上所述。您可以使用 ping 命令,例如:
或者
VM2 (ClientVM) 的结果如下所示:
两个虚拟机都按照我们的预期工作。现在我们将开始配置VM2(NAT路由器)。
步骤 3. 在 VM2 上打开 sysctl.conf 文件,并通过取消注释将“net.ipv4.ip_forward”参数设置为 1:
第 4 步。 现在使用以下命令启用对上述文件的更改:
第 5 步。 现在,使用以下命令安装 iptables-persistent 软件包(netfilter 规则的启动时加载程序、iptables 插件):
步骤 6. 通过发出以下命令列出已配置的 iptable 策略:
步骤 7. 现在使用 NAT 路由器虚拟机的外部 IP 屏蔽来自 LAN 内部的请求。
$ sudo iptables -t nat –L
步骤 8. 使用以下命令保存 iptable 规则:
测试设置
现在,要检查一切是否正常工作,请从 VM2(客户端)对任何公共 IP 执行 ping 操作:
注意:如果需要,您可以在客户端网络配置中手动添加 DNS 服务器以进行域名解析。这将抑制“名称解析暂时失败”。我们在 VM1 中使用了 Google DNS IP,即 8.8.8.8。
我们可以看到 ping 现在在 VM1(客户端计算机)上按预期工作。
结论
NAT 是保留有限公共 IPv4 地址空间的非常重要的工具。尽管IPv6是新兴的下一代IP协议,旨在解决IPv4的局限性,但这仍然是一个漫长的过程;因此在此之前 NAT 对于组织来说非常重要。