有没有什么办法可以从主网络 (192.168.1.0/24) ping 到子网络 (192.168.2.0/24)

有没有什么办法可以从主网络 (192.168.1.0/24) ping 到子网络 (192.168.2.0/24)

因此,我从运行 Raspbian Stretch Kernel 版本:4.14、wlan0 的 Raspberry pi 3b+ 接入互联网,并且我只需创建一个网络桥接器即可将互联网提供给以太网适配器,当我将新计算机插入它时,它将通过 dhcp 提供 ip 地址。所以我这样做了,并且它工作正常,但是当我尝试从位于 192.168.1.0/24 上的主计算机 ping 到 192.168.2.0/24 网络时,我不能这样做,但是当我尝试从 192.168.2.0/24 网络 ping 到 192.168.1.0/24 时我可以。这是为什么?我希望能够访问 192.168.2.xxx,因为我想在那里托管一个网络服务器。救命...

我尝试过这样的桥接:

sudo apt-get install dnsmasq

sudo nano /etc/dhcpcd.conf:
interface eth0
static ip_address=192.168.2.1/24 
static routers=192.168.2.0

sudo nano /etc/network/interfaces:
 auto eth0
allow-hotplug eth0 
iface eth0 inet static
    address 192.168.2.1 
    netmask 255.255.255.0
    network 192.168.2.0 
    broadcast 192.168.2.255

auto wlan0
allow-hotplug wlan0 
iface wlan0 inet static 
    address 192.168.1.10 
    gateway 192.168.1.1 
    netmask 255.255.255.0 
    network 192.168.1.0 
    broadcast 192.168.1.255 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

sudo service dhcpcd restart

sudo nano /etc/dnsmasq.conf:
interface=eth0 # Use interface eth0 listen-address=192.168.2.1 # Specify the address to listen on bind-interfaces # Bind to the interface 
server=8.8.8.8 # Use Google DNS
domain-needed # Don't forward short names
bogus-priv # Drop the non-routed address spaces. 
dhcp-range=192.168.2.10,192.168.2.20,12h # IP range and lease time

sudo nano /etc/sysctl.conf:
net.ipv4.ip_forward=1 


sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT`
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

sudo service dnsmasq start

答案1

因此,据我所知,您当前的网络设置是:

  • 一个私有网络192.168.1.0/24,我们称之为 net1
  • A分离的私有网络192.168.2.0/24,我们称之为 net2

现在,net1 是不是net2 的子集。它们实际上是两个独立的网络,您需要在它们之间进行路由。

看起来像:

  • 您的“主”计算机(我们称之为 pcA)位于 net1 上
  • 你的“新”电脑,我们称之为 pcB,位于 net2 上
  • 您有一个 Raspberry Pi,它在 net1 和 net2 上都有地址。
  • 您让 Pi 充当 net2 的网关,并执行 NAT,以便 net2 上的主机(包括 pcB)可以访问 net1(因此可以通过 net1 访问互联网)。这实际上是典型的家用 NAT 路由器所做的。
    • 这可以解释为什么你可以从 net2 访问 net1 主机,但反之则不行。

根据该设置,您有以下几个选择:

  • 您可以将其视为任何其他 NAT 路由器(第 3 层),并执行转发端口。换句话说,您可以将端口从 Pi 的 net1 地址转发到 net2 主机上的特定端口。例如,假设 Pi 的 net1 地址为192.168.1.10,而 pcB 的 net2 地址为192.168.2.55,您可以转发192.168.1.10:80192.168.2.55:80。然后,您可以通过访问 Pi 的端口 80(192.168.1.10:80)从 net1 主机访问 pcB 上的端口 80。

  • 你可以(第 2 层)Pi 上的两个接口。这意味着所有内容都在 net1 上,而 net2 不存在。所有内容都在空间中192.168.1.0/24,可以自由访问彼此。这意味着您的 Pi 不再充当路由器,您应该放弃 NAT 并禁用 Pi 上的 DHCP 和 DNS 服务。Pi 的 eth0 接口上的所有内容都将通过 net1 的 DHCP 服务器通过桥接连接分配一个 net1 地址。

  • 你可以继续拥有两个独立的网络(第 3 层),并继续对外部主机使用 NAT,但要正确路线在您的内部网络之间进行。为此,您有两种选择:

    • 目前,您的 net1 主机将全部访问其默认网关,以处理不在同一网络上的任何事物。您可以继续执行此操作,并配置默认网关(可能是您的通用家用路由器)以将任何 net2 目的地转发到 Pi 的 net1 地址。
    • 您可以单独为每台 net1 主机配置静态路由,以便 net2 目的地通过 Pi 的 net1 地址到达。这需要更多的配置工作,但速度会更快,因为数据包不必通过 net1 的网关路由。

    无论使用哪种方式,您都应该将 Pi 配置为不对具有 net1 目的地的请求应用 NAT;这些请求应该在不进行转换的情况下转发。


端口转发是当前设置下最简单的选项。但我建议使用桥接(如果你实际上没有需要额外的网络,这是最干净的解决方案)或路由(如果您实际上需要额外的网络,例如出于防火墙目的)无需 NAT,因为它们将为您提供对主机的完全访问权限,而无需单独转发每个端口。

相关内容