如何将 PC 设置为从本地网络到互联网的网关?

如何将 PC 设置为从本地网络到互联网的网关?

这是一个后续问题问题。

我想配置一个本地网络,使其客户端使用服务器作为通往互联网的网关。

所有客户端和服务器上的操作系统都是 OpenSuse 42.3。每个成员已经可以自行访问互联网,并且每个成员都可以 ping 通其他成员。

我为服务器提供了两个 IP:一个用于本地网络,一个用于互联网,并在其中启用了 ipv4 转发。

客户端使用服务器的 IP 作为通向互联网的标准网关,但我可能设置了一些错误的值,因为它不起作用。

答案1

OpenSuse 的包管理器中应该有 shorewall 和 shorewall-doc 包。

https://software.opensuse.org/package/shorewall

Shoreline 防火墙,通常称为“Shorewall”,是一种基于 Netfilter >(iptables)的防火墙,可用于专用防火墙系统、多功能网关/路由器/服务器或独立的 GNU/Linux 系统。

Debian 示例

安装shorewall后启用net.ipv4.ip_forward = 1/etc/sysctl.conf执行sysctl -p

假设您的网关上有两个以太网接口,并且您已经安装了 shorewall-doc,我们需要来自 /usr/share/doc/shorewall/examples/two-interfaces/ 的以下示例

  • 区域
    • 告诉 shorewall 哪些区域(网络)与其相连。
  • 接口
    • 告诉 shorewall 可以使用哪些接口
  • 面具
    • 将我们的私有 IP 地址范围转换为我们的公共 IP
  • 政策
    • 做出广泛而深刻的改变
  • 规则
    • 对政策文件做出例外

并将它们全部放在 /etc/shorewall/

区域文件应该包含

  • 防火墙
  • 网络 IPv4
  • 本地 IPv4

以下是一个例子接口文件,eth0 上的 dhcp 选项适用于您从 ISP 获取“动态”静态地址的情况。

net     eth0            dhcp,tcpflags,nosmurfs,routefilter,logmartians,sourceroute=0
loc     eth1            tcpflags,nosmurfs,routefilter,logmartians

你的 masq 文件将你的私有地址范围转换为你的公共地址,例如

eth0                    192.168.1.0/24

政策文件是广泛而重大的防火墙变革,在这里

  1. 拒绝所有传入流量
  2. 允许所有传出流量

策略示例

loc net ACCEPT
fw all DROP
net all DROP
all all DROP

规则文件为策略文件设置例外,因此我们在这里例如想要允许 SSH 到网关,因为all all DROP否则应该拒绝我们向 FW 发送任何包

SSH(ACCEPT)     loc     $FW

允许 ICMP 包,这样我们就不会拒绝 ICMP PMTU。

ACCEPT          all     all     icmp

允许防火墙解析 DNS 查询,因为这在策略中被阻止。在 Debian 上用于运行 apt-get 更新和安装包。

ACCEPT  $FW     net     tcp,udp         53,80

http://shorewall.net/manpages/对于上述所有选项都有详尽的记录。

在使用防火墙规则之前,请使用检查配置是否没有错误,shorewall check并使用使新更改生效shorewall safe-restart

当您创建了一个有效的配置并且乐意保存您的 iptables 规则并iptables-save > /root/iptables.txt在 /etc/network/interfaces 中进行输入以在您的接口启动之前加载规则时pre-up iptables-restore < /root/iptables.txt,这样如果 shorewall 在某个时候启动失败,您的网络就不会毫无防御能力。

他们还有很多工作要做,以进一步加强你的网络,但这只是一个开始。

相关内容