转换为防火墙后,区域内的子网之间出​​现“无主机路由”错误

转换为防火墙后,区域内的子网之间出​​现“无主机路由”错误

我有一台运行 Debian 10 的路由器,已经用了好几年了。昨天我决定从 转换为 ,iptables因为firewalld我需要加强安全性并在未来支持一些新网络。但目前我还是想保持简单。

好消息是,我能够路由来自我区域到互联网,这是路由器 90% 的工作。坏消息是,现在no route to host当我尝试跨子网连接我的区域。以前不是这样的,所以我认为这与有关firewalld

下面是我尝试从 10.0.1.0 网络上的一台计算机通过 ssh 连接到 10.0.0.0 网络上的一台计算机的示例:

$ ssh foo@libreelec
ssh: connect to host libreelec port 22: No route to host

但是,我绝对可以使用 ping 来路由到它:

$ ping libreelec
PING libreelec (10.0.0.29) 56(84) bytes of data.
64 bytes from LibreELEC (10.0.0.29): icmp_seq=1 ttl=63 time=5.05 ms
...

以下是firewalld我的路由器的设置方法:

Zones:
--> home
----> eth1 (10.0.1.0/24)
----> wlan0 (10.0.0.0/24)
--> public
----> eth0 (73.xxx.77.xxx/23) / Interface to my modem

以下是我的区域配置如下:

home (active)
  target: default
  icmp-block-inversion: no
  interfaces: wlan0 eth1
  sources:
  services: ssh mdns samba-client dhcpv6-client dhcp dns
  ports: 9000/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

...这是我的路由表(没有已更改):

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         73.246.76.1     0.0.0.0         UG    202    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 wlan0
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
73.xxx.76.0     0.0.0.0         255.255.254.0   U     202    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     204    0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     305    0        0 wlan0

这是人们切换到时常见的问题吗firewalld?我可以在路由器级别做什么来解除两个子网之间的路由阻塞区?

更新 1

Michael Hampton 要求我发布该命令的输出iptables -Lnv,但我这样做时出现了iptables: No chain/target/match by that name.错误。但是,以下是输出iptables -S

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N FORWARD_IN_ZONES
-N FORWARD_IN_ZONES_SOURCE
-N FORWARD_OUT_ZONES
-N FORWARD_OUT_ZONES_SOURCE
-N FORWARD_direct
-N FWDI_home
-N FWDI_home_allow
-N FWDI_home_deny
-N FWDI_home_log
-N FWDI_public
-N FWDI_public_allow
-N FWDI_public_deny
-N FWDI_public_log
-N FWDO_home
-N FWDO_home_allow
-N FWDO_home_deny
-N FWDO_home_log
-N FWDO_public
-N FWDO_public_allow
-N FWDO_public_deny
-N FWDO_public_log
-N INPUT_ZONES
-N INPUT_ZONES_SOURCE
-N INPUT_direct
-N IN_home
-N IN_home_allow
-N IN_home_deny
-N IN_home_log
-N IN_public
-N IN_public_allow
-N IN_public_deny
-N IN_public_log
-N OUTPUT_direct
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_IN_ZONES_SOURCE
-A FORWARD -j FORWARD_IN_ZONES
-A FORWARD -j FORWARD_OUT_ZONES_SOURCE
-A FORWARD -j FORWARD_OUT_ZONES
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -j OUTPUT_direct
-A FORWARD_IN_ZONES -i eth1 -g FWDI_public
-A FORWARD_IN_ZONES -i wlan0 -g FWDI_home
-A FORWARD_IN_ZONES -i eth0 -g FWDI_home
-A FORWARD_IN_ZONES -g FWDI_public
-A FORWARD_OUT_ZONES -o eth1 -g FWDO_public
-A FORWARD_OUT_ZONES -o wlan0 -g FWDO_home
-A FORWARD_OUT_ZONES -o eth0 -g FWDO_home
-A FORWARD_OUT_ZONES -g FWDO_public
-A FWDI_home -j FWDI_home_log
-A FWDI_home -j FWDI_home_deny
-A FWDI_home -j FWDI_home_allow
-A FWDI_home -p icmp -j ACCEPT
-A FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-A FWDI_public -j FWDI_public_allow
-A FWDI_public -p icmp -j ACCEPT
-A FWDO_home -j FWDO_home_log
-A FWDO_home -j FWDO_home_deny
-A FWDO_home -j FWDO_home_allow
-A FWDO_public -j FWDO_public_log
-A FWDO_public -j FWDO_public_deny
-A FWDO_public -j FWDO_public_allow
-A FWDO_public_allow -j ACCEPT
-A INPUT_ZONES -i eth1 -g IN_public
-A INPUT_ZONES -i wlan0 -g IN_home
-A INPUT_ZONES -i eth0 -g IN_home
-A INPUT_ZONES -g IN_public
-A IN_home -j IN_home_log
-A IN_home -j IN_home_deny
-A IN_home -j IN_home_allow
-A IN_home -p icmp -j ACCEPT
-A IN_home_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -d 224.0.0.251/32 -p udp -m udp --dport 5353 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -p udp -m udp --dport 137 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -p udp -m udp --dport 138 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -p udp -m udp --dport 67 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
-A IN_home_allow -p tcp -m tcp --dport 9000 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p udp -m udp --dport 67 -m conntrack --ctstate NEW -j ACCEPT

答案1

我认为这最终是该问题的重复:

我最终运行了类似于此的命令,并且能够使 HOME 区域内两个子网中的主机在每个端口上进行通信:

# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -o enxd8eb97b84051 -i wlan0 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enxd8eb97b84051 -o eth1 -j ACCEPT
# firewall-cmd --reload

相关内容