尽管 Raspberry Pi 3 最近已发布,但 Raspberry Pi 2 仍然具有充足的生命力,并且非常适合许多有趣且有用的任务。
我有一些 Raspberry Pi 闲置着,我一直在探索其他有趣的项目,其中之一就是能否替换掉我网络边缘使用的非常旧的单核 64 位 Intel 机架式服务器,该服务器目前主要用作防火墙和路由器。但在我中断网络的主要防火墙和网关之前,我想先测试一下 Pi,看看需要做些什么才能实现这一点。
替换塔式机
我还有一台双核 Intel 塔式机,我用作防火墙和网络的侧门。对于这项任务来说,这台计算机过于强大了,我肯定可以在更合适的角色中使用它。由于这台计算机为我的网络提供非关键访问,我决定用 Raspberry Pi 2 Model B 替换它进行测试。
电源
我使用了 Raspberry Pi 2 Model B,但 Raspberry Pi 3 也应该可以工作。我使用备用的 Kindle 5V 1.8A USB 电源适配器为 Pi 供电,电源适配器插在一个标准的家用延长线上,而延长线又插在一个 UPS 上以提供稳定的电源。我使用了一根非常短的 USB 转 micro-USB 电缆,从电源适配器连接到 Pi 上的电源连接器。
KVM 切换器
我将我的几个基础设施主机连接到一个带有 VGA 和 PS/2 输入的 16 端口 KVM 切换器。我也想将 KVM 用于 Pi。我使用 USB 转 PS/2 适配器电缆将 KVM 的键盘和鼠标输入连接到 Pi。USB 端插入 Pi,而来自 KVM 切换器电缆的连接器插入适配器上的 PS/2 连接器。我过去发现某些品牌的 USB 转 PS/2 适配器效果不佳。
对于视频连接,我最初使用了一个 HDMI 转 VGA 适配器,它是一个单一的固体单元。这个设备产生了很多热量,其中大部分通过 HDMI 连接器传递到 Pi 中。后来我用一个适配器替换了单单元适配器,这个适配器在 HDMI 连接器和 VGA 转换器之间有一段短电缆,并且有一个连接器单元,产生的热量和传递的热量都明显减少。
安装 CentOS
我在我的其他基础设施服务器上使用 CentOS,所以我也想在 Pi 上使用它。使用我的主 Linux 工作站,我从 CentOS wiki 站点 下载了适用于 Pi 2 的 CentOS Userland 7 32 位 ARM 发行版,该站点也包含其他小型单板计算机的镜像。如果您使用的是 Raspberry Pi 3,则应使用该镜像。
请注意,镜像名称可能会随着更新镜像的发布而更改。您应始终使用最新的镜像。我解压缩了下载的 xz 镜像文件(使用 unxz),然后使用 dd 命令将镜像安装到 8GB microSD 卡上。
dd if=CentOS-Userland-7-armv7hl-Minimal-1511-RaspberryPi2.img of=/dev/sdx
请务必指定您的机器上 microSD 驱动器的正确位置。
无需其他步骤即可使 microSD 卡可启动。我将卡插入 Pi 板上的 microSD 卡插槽。然后,我将电源适配器的 micro-USB 连接器插入 Pi 上的电源连接器,以启动到命令行界面登录提示符。
初始配置
我以 root 用户身份使用默认密码“centos”(不带引号)登录,并立即更改了 root 密码。我在 /etc/hostname 中更改了主机名,并按照 /root/README 中的说明扩展了根分区,以填充 microSD 卡上的所有可用空间。这包括重启。
此时,我将板载网络适配器连接到我的内部网络,以便我可以安装更多软件并测试网络功能。我安装了各种我认为有用的实用程序,包括 which、screen、vim、rwhois、mlocate、Midnight Commander (mc)、mailx、bind-utils、chrony 和 wget。
我的一些其他最喜欢的工具,例如 atop 和 htop,尚未从 CentOS 存储库中获得。我没有一次安装所有这些工具,因为我不知道哪些工具缺失。相反,我不得不遇到需要某个工具但未安装的问题,然后在完成此过程的其他步骤时安装它。希望此列表能让您更轻松。当然,您可能会使用一些我不使用的工具,它们也可能缺失。
我使用 SSH 密钥从我的网络登录,所以我使用 ssh-copy-id 将 SSH 公钥从我的主内部工作站复制到 Pi。
第二个网络接口
由于此 Pi 将用作防火墙,因此我需要另一个网络适配器。在关闭 eth0 后,我添加了一个 ASIX AX88178 USB 千兆以太网适配器。我断开了我的内部网络与板载网络适配器的连接,并将其连接到该适配器。我将该适配器配置为 eth1,在我的内部网络上具有静态地址,并将板载以太网配置为具有静态外部地址,并将其连接到我的 ISP 的路由器。请务必在接口配置文件中使用 HWADDR= 行来设置配置文件所属的 MAC 地址。我还为内部适配器的接口配置文件添加了网关 IP 地址和至少两个名称服务器。
我启动了两个网络适配器,并使用 ifconfig 和几个 ping 命令来验证网络适配器是否绑定到正确的 IP 地址并正常工作。现在我可以从我的主工作站上的终端会话登录到 Pi,并从那里继续工作。
更新和更多配置
现在是时候安装所有更新并重启了——我确实这样做了。我发现有趣的是,当前两个版本的 CentOS for ARM 都使用了 firewalld 和 systemd 等工具,但仍然使用 yum 而不是 dnf 进行高级软件包管理。
我有一些别名和启动命令,当安装新主机时,我总是将它们添加到我的环境中。这些命令可以添加到 /etc/bashrc 中,或者更好的是,作为一个单独的文件 /etc/profile.d/mybash.sh。/etc/profile.d 中任何带有 .sh 文件扩展名的文件都会在登录期间被 /etc/bashrc 引用。
日期和时间
此版本的 CentOS 默认未安装任何类型的时间同步,因此我安装了 chrony 并使用我的本地 NTP 时间服务器配置了 chrony.conf。我启动了 chronyd,并配置 systemctl 以在启动时启动 chronyd。我还设置了 /etc/localtime 符号链接以指向所需的时区数据文件。
防火墙
新的 firewalld 对于我的环境来说确实过于复杂了,所以我安装了 iptables-services 和 iptables-utils。我配置了一个默认的 /etc/sysconfig/iptables 文件,然后,在关闭外部网络连接后,我停止了 firewalld 并配置 systemd 以不在启动时启动它。我启动了 iptables 并配置 systemd 以在启动时启动它。然后我重新启动了外部网络连接。
瞧!
一旦您到达这一点,Pi 就完全可以作为防火墙和侧门使用了。
再多做两步就可以很容易地将其变成路由器。首先,将文件 /proc/sys/net/ipv4/ip_forward 的内容设置为“1”,然后在 /etc/sysctl.conf 中添加或设置以下行 “net.ipv4.ip_forward = 1”,这将使您的计算机成为路由器。然后为 iptables 防火墙添加适当的源 NAT 和转发行。
我昨天刚收到三台新的 Raspberry Pi 3 计算机。我已经用 CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img 镜像设置好了一台,并将在接下来的几天内完成配置,使其成为我的主要防火墙和路由器。
IPTables 规则
有人在评论中要求查看我用于此项目的 IPTables 规则,我怀疑其他人也对此感兴趣,所以这里是它们。这是一个相当标准的最小集合,仅允许入站 SSH。
# Generated by iptables-save v1.4.16.2 on Thu Feb 21 14:51:28 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Feb 21 14:51:28 2013
11 条评论