我有一台 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
答案1
我使用了类似的方法,但是是直接将计算机连接到计算机。
我的/etc/dhcp/dhcpd.conf
是这样的(用你的 IP 代替):
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;
}
#optional; so enx3c can be set to use DHCP but still having static a ip
host someHostname {
hardware ethernet mac-address-of-enx3c;
fixed-address 192.168.137.1;
}
我的主要路由方法是通过ufw
,如下所示(127.0.0.1 为服务器,192.168.130.1 本地 DHCP 地址):
ufw route allow from 127.0.0.1 app WWW to 192.168.130.1 app WWW
外部 IP(192.168.130.20)无法通过 NIC(eno1)访问,因此我使用路由修复:
route add -host 192.168.130.20 dev eno1