使用 18.04 服务器进行网络设置

使用 18.04 服务器进行网络设置

自从我最近升级以来,我的网络设置一直有问题。它以前可以正常工作,但现在 IP 流量无法像以前那样通过,不过其他一切似乎都正常。我之前问过这个问题,但现在我要问如何从头开始设置我的网络。我的网络如下所示:-

 Client PCs   |--------|
  Windows-----|        |                |----------------|
   Linux(1)---| Switch |-------------(2)| Server (18.04) |(3)-------Internet
  Printer-----|        |                |----------------|
 Other PCs----|        |
              |--------|

(1)私有网络上的 Linux PC 的 ifconfig 输出:-

eth0  Link encap:Ethernet  HWaddr 00:19:66:82:61:f7  
      inet addr:192.168.1.126  Bcast:192.168.1.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:37 errors:0 dropped:0 overruns:0 frame:0
      TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:4829 (4.8 KB)  TX bytes:8871 (8.8 KB)
      Interrupt:23 Base address:0xa800 

lo    Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:142 errors:0 dropped:0 overruns:0 frame:0
      TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:10976 (10.9 KB)  TX bytes:10976 (10.9 KB)

(2)以太网ID:enp5s0

(3)以太网ID:enp0s31f6

服务器上的 yaml netplan 文件是:-

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp5s0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.2/24]
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
    enp0s31f6:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.0.5/24]
      gateway4: 192.168.0.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

该服务器还运行 dnsmasq,它提供 DHCP 和 DNS 服务,这些服务似乎工作正常,在客户端 PC 上按名称 ping 一个站点(例如“ping stackoverflow.com”)确实会获得 IP 地址,但无法进行实际 ping。

此外,“/proc/sys/net/ipv4/ip_forward”设置为“1”。

我是否忽略了一些显而易见的事情?

如果您需要了解其他信息,请发表评论,我会使用相关信息更新问题。

答案1

你这里缺少的是NAT 规则因此系统知道如何将流量从网络内部路由到外部。但是,我们这里有一个问题:您已经为我们提供了网络接口,两者都有私有 IPv4 地址。这使得处理 NAT 规则变得有点棘手。

不过,假设只有一个接口具有网关(enp0s31f6),我将假设该接口是互联网连接接口。

NAT 代表网络地址解读。如果你想了解更多关于 NAT 的工作原理,How Stuff Works (.com) 网站提供了一本不错的 NAT 入门指南如果您想进一步了解 NAT 的工作原理。

实际上描述NAT 的行为方式与回答这个问题不太相关,但基本上,它从私有 IP 空间(例如源地址为 192.168.0.10)获取发往互联网的数据包,并在重新广播到互联网之前转换数据包(通常),以便“源”地址看起来像路由器的公共 IP 地址。此 NAT“会话”将被记住,直到该会话的连接终止,这意味着路由器也可以执行反向 NAT 规则,以便互联网的数据包最终正确地到达内部 IP 地址。(《How Stuff Works》指南在解释 NAT 方面比这更好;这只是一个快速而粗略的描述)


现在,让您的“路由器”工作起来。

您需要添加 NAT 规则,以便私有子网(在 上enp5s0)被允许冒充服务器进入互联网。这在术语MASQUERADE中称为iptables。这就是标准现成路由器的工作方式,它们都使用 NAT 将私有 IPv4 地址转换为公共地址,以便与互联网无缝通信。

您应该从以下命令开始:

sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

让我分解一下,以便你能够理解这条规则实际上的作用。

  • sudo iptables-iptables以超级用户身份执行该命令。
  • -t nat- 调整系统上的 NAT 规则而不是防火墙访问控制/过滤列表。
  • -A POSTROUTING- 添加到后路由 NAT 表。
  • -s 192.168.1.0/24- 匹配来自私有 IP 子网的流量……
  • ! -d 192.168.1.0/24- ... 目标 IP 地址为不是子网的私有 IP 空间……
  • -j MASQUERADE- ...并通过主网络接口(在本例中为enp0s31f6)重新传输此数据包,转换数据包的 IP 地址,使其看起来像是来自“路由器”/服务器,而任何在私有 IP 空间之外看到该数据包的东西。

因此,如果数据包来自 192.168.1.10,并且发往 IP 地址在 192.168.1.0-255 之外的服务器,那么对于该服务器而言,该数据包将看起来像是来自 192.168.0.5(您的服务器),而不是来自 192.168.1.10。不过,系统会记住此转换,以便接收发往 192.168.0.5 的响应数据包,并确保它们正确寻址以返回您的 192.168.1.10 地址。


但是,有一个问题:重启后它将不会被保存。

因此您应该安装该iptables-persistent软件包,以便每次启动时都重新加载此 NAT 规则。**

sudo apt install iptables-persistent

当它提示您保存当前的 IPv4 和 IPv6 规则时,您应该选择“是”。


此外,这种不设置任何防火墙规则的“默认”做法虽然在理论上很好,使你的系统容易受到来自整个互联网的攻击,您确实应该查阅一些iptables关于如何正确保护服务器/路由器的基本指南,以便外部无法直接攻击服务器。但是,这超出了您最初问题的范围,如果您需要帮助更好地保护私有网络免受外部(“互联网”)的攻击,那么您应该考虑将其作为单独的问题提出。

相关内容