我正在尝试使用 ArchLinux 设置透明防火墙。
我的设置如下所示:
(ISP, IP: 10.90.10.254)
\
\
\ (eth0-> ip: 10.90.10.1 gateway: 10.90.10.254)
+-----------+
| |
| PC |
|(as server)|
+-----------+
\ (eth1-> ip: 10.90.10.100)
\
\
(10.90.10.101)\ | (wireless-> ip-range: 10.90.10.102-)
+-------+
|Router |
+-------+
我的路由器没有防火墙功能,因此我需要在路由器和 ISP 之间设置防火墙。
答案1
为此,您需要在 PC 上将 eth0 和 eth1 置于桥接模式,并为桥接接口提供 1 个 IP(而不是在单个 eth 上)
以下是有关 Linux 上桥接的基础知识,请开始使用 http://www.tldp.org/HOWTO/BRIDGE-STP-HOWTO/index.html
根据您的发行版,可能有更快/更好的方法来进行桥接。
现在,您提到的无线IP范围无法通过某些配置来指定。将哪些 IP 分配到哪里由您决定。
也许您可以通过 DHCP 进行控制,但这取决于您的整体设置和需求。
答案2
首先,您应该启用网络地址转换:
插入此行
net.ipv4.ip_forward = 1
到
/etc/sysctl.conf
(插入线路后立即生效)并添加防火墙规则:
iptables -t NAT -A POSTROUTING -!o lo -j MASQUERADE
现在无线网络可以通过服务器 PC 向 ISP 发送数据包
还有一个建议:禁用对服务器的“所有”访问,仅启用您真正需要的:
iptables -P 输入下降
iptables -A 输入 -m 状态 --state 相关,已建立 -j 接受
iptables -A 输入 -i eth1 -m 状态 --state 新 -j ACCPET
此设置禁用默认的“所有允许”数据包流,禁用从 ISP(和 WAN)连接到服务器端口,启用来自无线网络的传出连接。
如果需要在防火墙中打开服务器端口:
iptables -A 输入 -p tcp -m tcp --dport 22 -j 接受
如果需要,将 tcp 替换为 udp,端口范围可以使用 from:to 模式添加。
如果出现问题并关闭自己,您可以重置防火墙规则:
iptables-F
最简单的方法是,如果您将 webmin 安装到您的服务器系统中,它就会有很棒的防火墙配置器 GUI。但如果你自己关闭并且无法访问 webmin,请永远记住“iptables -F”命令
答案3
如果您将 eth0(也许还有 eth1)定义为点对点接口(请参阅 参考资料、参考资料),那么这应该是可能的(从服务器的角度来看man ip-address
)peer
。
从我看来,地址选择从各个方面来说都是一个坏主意。 eth1 和 WLAN 的网络不能重叠。如果 eth1 不是点对点接口并且 WLAN 从 102 开始,则这是不可能的。
路由器上更糟糕的是:它的 LAN IP 是 WLAN 网络的一部分,因此它也必须是 p2p(可以在路由器上配置吗?)。