在Linux上共享两个网络接口

在Linux上共享两个网络接口

我有一台 Linux PC(ubuntu 22.04),其网络布局如下:

互联网<->路由器<->个人电脑<-> 边缘设备 <-> 交换机 <-> AP <-> 设备

并具有两个Lan接口如下:

  • eno1:连接到互联网(直接连接到路由器),从路由器获取 IP:192.168.1.165(DHCP)
  • enx3c:连接到边缘设备,并且该边缘设备连接到交换机,同样有许多设备连接到该交换机。

我希望连接到的客户端enx3c能够访问互联网eno1。此外,我还需要能够直接与enx3c接口下的设备进行通信。

我已经遵循了这里以及许多其他教程和问题,了解如何使用 iptables 将流量从一个接口转发到另一个接口,如下所示:

echo 1 > /proc/sys/net/ipv4/ip_forward 
sudo vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
sudo sysctl -p 

iptables -A FORWARD -i eno1 -o enx3c -j ACCEPT 
iptables -A FORWARD -i enx3c -o eno1 -m state –state ESTABLISHED,RELATED -j ACCEPT 
iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

这样做之后,边缘设备没有获得任何 IP,因此我按照以下步骤在 PC 上设置了一个 DHCP 服务器:

sudo apt install isc-dhcp-server
sudo vim /etc/dhcp/dhcpd.conf 
    subnet 192.168.137.0 netmask 255.255.255.0 { 
    default-lease-time 600; 
    max-lease-time 7200; 
    authoritative; 
    range 192.168.137.1 192.168.137.200; 
    option routers 192.168.137.254; 
    option domain-name-servers 192.168.137.1, 192.168.137.2; 
}

sudo vim  /etc/default/isc-dhcp-server 
INTERFACESv4="enx3c" 
#so the DHCP server produces Ips for clients connected to the second interface

sudo systemctl start isc-dhcp-server

并且eno1将接口设置为 DHCP 以从路由器获取动态 IP,enx3c设置为手动以获取静态 IP(192.168.137.1)。

启动 DHCP 服务器后,边缘设备会获取范围内的 IP,nmap 会在活动主机中显示该 IP,但无法访问!我无法 ping 或 ssh 进入。边缘设备无法访问任何互联网。

我到处都找过了,看来这个方法一定有效,但我不知道我做错了什么。我很感激任何建议。

更新: 值得一提的是,使用答案这里, 我share to other networks在第二个界面上使用了 Ubuntu 网络管理器中的选项,之后,它会获取不同范围内的 IP,,10.42.0.1/24并且边缘设备也会在此范围内获取新 IP,,10.42.0.162但同样,我无法 ping 或 ssh 进入该设备。

以下是路由表的输出:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno1
10.42.0.0       0.0.0.0         255.255.255.0   U     101    0        0 enx3c
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

相关内容