我的主网关路由器(也是我的 LAN 的 DHCP 和 DNS 服务器)允许我通过 ssh 访问并配置 iptables。由于我几乎每天都会让它提供更多服务,如 NTP、DNS、FTP 等,因此我想允许我的 LAN 接口/子网上的所有流量和端口进出我的路由器,以确保我的 LAN 上的任何设备都可以访问这些服务。
本质上禁用了我的 LAN 端防火墙。
但是,由于这也是我的网关路由器,所以我不想以允许互联网流量利用我的 iptables 配置的方式配置这些 iptables。
我的私有 IP 范围是 192.168.50.0/24,并自动分配了 br0 接口。
以下是我用来允许所有 LAN 流量的 iptables 命令。
iptables --append INPUT --in-interface br0 --jump ACCEPT
iptables --append INPUT --source 192.168.50.0/24 --jump ACCEPT
iptables --append OUTPUT --out-interface br0 --jump ACCEPT
iptables --append OUTPUT --source 192.168.50.0/24 --jump ACCEPT
我不是路由或 iptables 方面的专家,但当我将其解释为'接受 192.168.50.0/24 中的所有输出“这让我想到,当来自互联网的流量通过我的网关路由后,所有流量都会被我的 LAN 中的任何地方接受。
答案1
这里对iptables防火墙做一下简单说明:
INPUT will allow or deny traffic destined to the gateway/firewall host
OUTPUT will allow or deny traffic leaving the gateway/firewall host
FORWARD will allow or deny traffic going through the gateway/firewall host
在您的案例中,您需要FORWARD 192.168.50.0/24
启用伪装,允许返回相关流量,最后丢弃所有内容。假设br0
接口直接连接到本地网络(LAN),而br1
面向互联网(WAN)
在 Linux 网关/防火墙上启用路由
$ sudo echo "1" > /proc/sys/net/ipv4/ip_forward
仅将 LAN 子网转发192.168.50.0/24
到互联网
$ sudo iptables -A FORWARD -i br0 -o br1 -s 192.168.50.0/24 -j ACCEPT
启用伪装(NAT)
$ sudo iptables -t nat -A POSTROUTING -o br1 -j MASQUERADE
允许从 WAN 到 LAN 的返回流量
$ sudo iptables -A FORWARD -i br1 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT