ipv6 路由器的 ip6tables 脚本

ipv6 路由器的 ip6tables 脚本

我在 ubuntu 电脑上使用 gogoc 隧道代理来启用 ipv6。我想将我的 Ubuntu 电脑用作 ipv6 路由器。我已在 gogoc 客户端中启用了路由器模式。我使用 radvd 在本地 LAN 上宣传路由器。tun是隧道 (WAN) 接口。br0是 LAN 接口(wan0 和 eth0 已桥接以使笔记本电脑成为无线接入点)。我可以使用哪些防火墙规则来启用数据包转发并为路由器和 LAN 设备提供相当好的安全性。

答案1

我不能说我熟悉那个特定的隧道代理,我假设您为主机收到了 /64。有些隧道代理提供 /48,在这种情况下您需要稍微调整规则。这些是 iptables-save 格式:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Allow established connections
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow ICMPv6 traffic (required for IPv6) This could be tightened up but it must
# be done very carefully unless you know what you're doing. It could block all
# routing
-A INPUT -p ipv6-icmp -j ACCEPT
-A FORWARD -p ipv6-icmp -j ACCEPT

# Allow traffic from your internal hosts to the outside world
-A FORWARD -s <your address block>::/64 -j ACCEPT

COMMIT

您需要用您分配的地址范围替换“<您的地址块>::/64”。

此防火墙将阻止所有外部连接到您的本地 IPv6 地址,同时允许它们访问所有内容。如果您需要在内部 IPv6 主机上提供服务,则需要在 FORWARD 链末尾(但在 COMMIT 之前)添加允许规则。

答案2

对于基于 Linux 的路由器,我发现shorewall6基于ip6tables--- 的防火墙工具效果很好。通过使用前端工具(如shorewall6而不是 raw )ip6tables,您可以省去某些重要但繁琐的细节,例如考虑 ICMPv6 的不确定性(我需要接受哪些类型?丢弃/拒绝哪些类型?),因为它们已经得到妥善处理。

要配置shorewall6,您需要编辑 中少量记录良好的配置文件/etc/shorewall6。至少,您需要修改这些文件:

  • zones,在这里您可以为您的网络命名;
  • interfaces,其中列出了您的网络接口以及它们所附加的区域;
  • policy,您可以在其中定义区域间转发的默认策略(ACCEPT、DROP 等);
  • 以及rules,您可以在其中为您的政策创建特定的例外情况。

(还有一些其他文件,但大多数情况下,默认文件即可。)

在您的例子中,您可以定义两个区域,例如lanwan。您的默认wan策略lan将是 DROP,而您的默认lan策略将是 ACCEPT。然后,例如,如果您想允许从该区域到您区域wan中的特定主机的 ssh 连接,您可以将这些例外添加到文件中。lanwanrules

总之,使用像这样的前端工具shorewall6可以很容易地创建一个强大且安全的路由器/防火墙 - 当然比使用原始工具更容易ip6tables- 因为它为您创建了一些易于理解的抽象来配置(区域,策略,规则),然后它会处理底层细节。

相关内容