在基于 busybox 的路由器上连接两个子网

在基于 busybox 的路由器上连接两个子网

我有以下的网络拓扑,我已尽力进行说明,所以请原谅我糟糕的绘画技巧。

不同的子网

我希望能够从10.0.0.0/24网络进行通信,192.168.1.0/28因为我想设置一个日志机作为在我的 LAN 上运行的虚拟机,另外还有一些其他用途。

我可以从 192.168.1.0/28 网络访问我的防火墙,但无法执行反向操作。

我知道基于 BusyBox 的华硕路由器必须双向存在路由,但我总是无法添加路由。

以下是路由表:

    Asus:
/home/root # ip r s
default via 192.168.0.2 dev eth2.2  metric 1 
127.0.0.0/8 dev lo  scope link 
192.168.0.0/24 dev eth2.2  proto kernel  scope link  src 192.168.0.3 
192.168.1.0/28 dev br0  proto kernel  scope link  src 192.168.1.1 



    Firewall:

admin@piwall:~$ ip r s
default via 10.0.0.1 dev eth0  metric 202 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.2  metric 202 
169.254.0.0/16 dev eth1  proto kernel  scope link  src 169.254.51.49  metric 203 
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.2 
192.168.1.0/28 via 192.168.0.2 dev eth1 

有人可以指导我如何正确添加路线来完成我的任务并解释一下,我将不胜感激。

谢谢!

答案1

防火墙上有一条不正确的路由:

192.168.1.0/28 via 192.168.0.2 dev eth1

应改为:

192.168.1.0/28 via 192.168.0.3 dev eth1

换句话说,通过关键字位于要建立连接的机器(本例中是 Asus 路由器)的 IP 地址之前。您使用的是与连接开始位置相同的机器的 IP 地址。

为了使其工作,还有三个其他条件,其中第一个条件与您无关,但我向所有将普通电脑配置为路由器的人提及它:

  1. 通过取消注释该行来启用 IPv4 转发

    #net.ipv4.ip_forward=1
    

    在文件中/etc/sysctl.conf,然后强制使用

    sudo sysctl -p
    

    。这与您无关,因为您的华硕路由器已经作为路由器运行,因此一定此选项已正确配置。

  2. 确保您的防火墙规则在华硕路由器上允许连接流动向后。路由器还通过丢弃直接通信尝试来保护其 LAN 内的机器,除非端口转发已启用。但这对您来说太严格了,因为您希望防火墙对您的 LAN 进行无限制的访问。因此,您将需要以下两条规则:

    iptables -a INPUT -s 192.168.0.2 -d 192.168.1.0/24 -j ACCEPT
    iptables -a FORWARD -s 192.168.0.2 -d 192.168.1.0/24 -j ACCEPT
    

    这两条规则接受来自以下地址的通信(第一条进入路由器,第二条将其传输到内部接口):仅有的Pi 机器(出于明显的安全原因),任何您的 LAN 中的 PC,无论使用哪个端口。这比仅允许某些端口转发更为广泛。

  3. 您的路由器将执行 NAT,这意味着所有传出的数据包都将被重写,就好像它们来自华硕路由器的外部接口,即 IP 地址为 192.168.0.3 的接口。这意味着所有回复到 Pi 防火墙的数据包似乎都来自与初始连接地址不同的 IP 地址,因此出于明显的安全原因,它们将被 Pi 防火墙丢弃(这种情况模仿了中间人攻击)。

    为了解决这个问题,你最好暂停华硕的 NAT仅有的对于发往 Pi 防火墙的数据包,如下所示:

    iptables -t nat -A POSTROUTING -d 192.168.1.2 -j ACCEPT
    

    为了使它工作,你需要确保(通过目视检查

    iptables -t nat -L -n -v
    

    )上面列出的规则以下规则

    iptables -t nat -A POSTROUTING -j MASQUERADE
    

    原因是iptables按顺序应用规则,直到找到第一个适用的规则,然后检查所有后续规则不是执行。在这种情况下,确保规则按此顺序排列可确保发往 Pi 防火墙的数据包将不是被重写。

答案2

您的路由表是正确的——更可能的是,华硕路由器作为家庭 WAN 网关,启用了防火墙,阻止了所有传入连接。看看您是否可以禁用它。

(如果 NAT 功能处于活动状态,您也应该禁用它。这可能不是这里的问题,但在同一个 LAN 中完全没有必要进行两次 NAT。)

相关内容