帮助使用 Server v22.04 上的 netplan 和 2 个 LAN

帮助使用 Server v22.04 上的 netplan 和 2 个 LAN

我正在运行带有 2 个 NIC 的 Ubuntu 服务器 v22.04 - 一个面向 ISP,一个面向本地 LAN,旨在作为本地 LAN 的媒体服务器以及 LAN 与 WAN 之间的接口。

NIC:

  1. enp0s31f6 - 使用 192.168.1.65 从 ISP 设备进行 DHCP,然后传出到 WAN
  2. enp3s0 - 静态 IP 192.168.126.10 和 192.168.126.x 网络上其余 LAN 网络的 DHCP 服务器。

目标是所有设备都获得 192.168.126.x 地址,然后流量流向服务器 192.168.126.10/192.168.1.65,然后再流向互联网。

服务器可以与整个互联网通信,可以 ping 静态 LAN IP 192.168.126.10(本身),但无法 ping 192.168.126.x 网络上的工作站

已获取 DHCP 的 192.168.126.x 地址的工作站可以 ping 本地网络服务器地址 192.168.126.10,但无法 ping ISP 地址 192.168.1.65。这些工作站无法访问互联网。

Netplan 配置:

network:
  version: 2
  ethernets:
    enp0s31f6:
      dhcp4: true
      nameservers:
        addresses: [4.2.2.1,8.8.4.4]
      routes:
        - to: 192.168.1.0/24
          via: 192.168.1.1
      routing-policy:
        - from: 192.168.1.0/24
    enps0:
      addresses: [192.168.126.10/32]
      dhcp4: no
      nameservers:
        addresses: [4.2.2.1,8.8.4.4]
      routes:
        - to: 192.168.126.0/24
          via: 192.168.126.10
        - to: 192.168.1.0/24
          via: 192.168.126.10
      routing-policy:
        - from: 192.168.126.0/24

dhcpd配置文件

authoritative;

server-identifier 192.168.126.10;
option domain-name "whatever.local";

shared-network dhcp-server
{
  subnet 192.168.126.0 netmask 255.255.255.0
  {
     option domain-name-servers 1.1.1.1, 8.8.4.4;
     option subnet-mask 255.255.255.0;
     option broadcast-address 192.16.126.255;
     option routers 192.168.126.10;
     option domain-name "whatever.local";
     default-lease-time 14400;
     max-lease-time 20000;
     range 192.168.216.100 192.168.126.250;
  }
}

DHCP 配置是从已经运行的旧 CentOS 机器复制而来的。

工作站 ipconfig /所有结果

Connection specific DNS suffix : whatever.local
DHCP Enabled ................. : Yes
Autoconfiguration Enabled .... : Yes
IPv4 Address ................. : 192.168.126.127(Preferred)
Subnet Mask .................. : 255.255.255.0
Default Gateway .............. : 192.168.126.10
DHCP Server .................. : 192.168.126.10
DNS Server ................... : 1.1.1.1
                                 8.8.4.4

DHCP 似乎可以正常工作,但我似乎无法让工作站流量到达 WAN 地址。工作站无法 ping Google.com,但可以访问任何 192.168.126.10 服务(ssh、httpd 等)

Netplan 对我来说完全是新东西,我也不是网络专家,也不相信这是最好的设置。但我一直在尝试模仿以前在 CentOS 中运行的方式。

ufw 已禁用(目前)

/proc/sys/et/ipv4/ip_forward 为 1

sysctl.conf 有 net.ipv4.ip_forward=1

我没有任何 iptables 规则。

有人能帮助我让流量在这两个 NIC 之间流动吗,或者为我指明不同的方向来解决我遇到的本地 LAN 到服务器到 WAN 的问题?

提前致谢!

答案1

您的静态 IP 上的网络掩码错误。您应该使用网络掩码 /24,而不是网络掩码 /32(仅限主机)。

一旦您纠正了这个问题,您的所有routesrouting-policy条目都是不必要的,应该被删除。

要使路由器后面的机器能够访问互联网,以下两个条件之一必须满足:要么 ISP 设备必须有一个条目,告诉它将 192.168.126.x 网络的所有流量路由到 192.168.1.65,要么您在路由器上启用了 NAT。Netplan 目前不支持 NAT 配置,您需要使用静态iptables/nftables命令或通过 Ubuntu 中提供的各种防火墙前端工具之一来执行此操作。

答案2

我的问题最终出在 iptables 规则上,而不是 netplan 或路由上。一条简单的 1 行规则解决了问题。

iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE

但是,当添加 Google 搜索时看到的其他标准规则时,流量完全停止流动。不要一次剪切和粘贴多个规则。

相关内容