我有一个家庭服务器(带有 slackware 13),其中 eth0 用于本地网络,eth1 用于互联网(带有动态 IP 的电缆调制解调器)。
虽然我确实想了解有关 iptables 的更多信息,但我仍在这个过程中,我需要完成一些规则,但在学会这样做之前我不能这样做,因为我不希望我的服务器在这个阶段受到损害。
我目前有一个虚拟机,我可以在其中使用我的规则和所有内容,如果有人能为我包装一条防火墙规则,让 iptables 执行以下操作,我将不胜感激:
- 允许 eth0 上的 dhcp 服务器的所有用户能够完全访问互联网和服务器,换句话说,eth0 在网络和服务器内不应受到任何限制。
- 允许所有用户能够创建服务器,例如,如果他们正在玩诸如魔兽争霸之类的游戏,并且他们创建了游戏,则防火墙应该允许这些连接的协商通过。
- 阻止从互联网到服务器的任何请求,除非它是由服务器或网络用户发起的。
答案1
那么,基本上你的 Linux 机器就充当了防火墙的角色?
首先,启用IP转发。
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
然后,添加一些转发规则:
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
保护 FORWARD 链:
iptables -P FORWARD DROP
创建NAT规则:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
最后,不要忘记检查您是否有默认路由:
ip route show | grep default
您应该看到类似以下内容:
default via <IP_of_eth1's_gateway> dev eth1
如果没有,请添加一个:
ip route add default vie <IP_of_eth1's_gateway> dev eth1
(一般DHCP客户端会自动添加一个)
答案2
为了允许服务器,您可以手动添加端口转发规则,或使用 uPnP 守护程序(如果应用程序支持 uPnP - 许多应用程序都支持...)[linux-igd][1]
应该这样做...
NAT-PMP 类似,并被一些其他应用程序使用。 Linux 的一个实现是这里。