3.4. 网络

既然您的用户已经可以访问系统,我们需要确保他们可以访问网络。我们通过使用 Linux 内核的防火墙规则和路由表来实现这一点。使用 routeipfwadm 命令,我们可以设置内核以适当的方式处理网络流量。有关 ipfwadmipchainsroute 的更多信息,请参阅 Linux Networking HOWTO

3.4.1. 内核

为了使所有这些工作正常进行,您必须正确配置内核。如果您不知道如何构建自己的内核,那么您应该阅读 Kernel HOWTO。除了基本网络之外,您还需要确保启用以下内核选项。我的系统中使用的是 2.0.38 内核。

对于 2.0 内核

对于 2.2 内核

3.4.2. 过滤规则

首先,我们编写防火墙过滤规则,允许我们的用户访问我们的内部网络,同时限制他们访问外部互联网。这听起来很奇怪,但是既然用户已经可以访问互联网,为什么还要让他们使用隧道访问网络呢?这会浪费带宽和处理器资源。

我们使用的过滤规则取决于我们使用的内部网络,但可以翻译为:“允许来自我们 VPN 并 направленные 到我们内部网络的流量到达那里。”那么我们该怎么做呢? 像往常一样,这取决于情况。如果您运行的是 2.0 内核,则使用名为 ipfwadm 的工具,但如果您使用的是 2.2 内核,则使用名为 ipchains 的实用程序。

要使用 ipfwadm 设置规则,请使用类似于以下的选项运行它

# /sbin/ipfwadm -F -f
# /sbin/ipfwadm -F -p deny
# /sbin/ipfwadm -F -a accept -S 192.168.13.0/24 -D 172.16.0.0/12

要使用 ipchains 设置规则,请使用类似于以下的选项运行它

# /sbin/ipchains -F forward
# /sbin/ipchains -P forward DENY
# /sbin/ipchains -A forward -j ACCEPT -s 192.168.13.0/24 -d 172.16.0.0/12

对于使用 2.2 内核的用户,请阅读 第 6.1.3 节

3.4.3. 路由

既然用户已被允许访问我们的网络,我们需要告诉内核将数据包发送到哪里。在我的系统中,我有两张以太网卡,一张在外部网络上,另一张在内部网络上。这有助于保持安全,因为出站流量由网关进行伪装,任何入站流量都由 Cisco 路由器进行过滤和路由。对于大多数设置,路由应该很简单。

接下来,将所有 направленные 到私有网络的流量路由到内部接口,并将所有其他流量路由到外部接口。具体的路由命令取决于您正在使用的内部网络。以下是一个示例,说明它们可能是什么样子。当然,这些行是您本地网络的基本路由的补充。我也怀疑您正在使用所有 3 组内部号码

Assuming that 172.16.254.254 is the internal gateway:

# /sbin/route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.16.254.254 dev eth1
# /sbin/route add -net 172.16.0.0 netmask 255.240.0.0 gw 172.16.254.254 dev eth1
# /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 172.16.254.254 dev eth1

关于路由的另一个补充说明。如果您正在使用双向路由(例如,远程办公室),那么您还需要做一件事。您需要在服务器上设置指向客户端的路由。完成此操作的最简单方法是每分钟运行一个 cron 作业,以静默方式设置回程路由。如果客户端未连接,route 将只输出一个错误(您已方便地将其发送到/dev/null.)