我有一台运行 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