在 ALIX.2D3 上使用 OpenVPN 客户端的经验

来自 Alpine Linux
此材料已过时...

此板上使用的 AMD Geode LX800 处理器不支持运行现代 Alpine Linux 版本所需的 SSE 指令。(讨论

ALIX.2D3 上的 OpenVPN 客户端

我们需要将远程桌面客户端(瘦客户端)和 SIP 电话连接到 OpenVPN 网络,以便访问某些服务。
无法在瘦客户端或 SIP 电话中安装 OpenVPN,因此我们需要一个 OpenVPN 网关。

我们购买了 ALIX.2D3 作为各种客户端的网关。该板具有 3 个 NIC,体积小,功耗低。

准备 ALIX 板

ALIX 板从 Compact Flash 卡运行操作系统。

安装 Alpine Linux

在 Compact Flash 上安装 Alpine 文章包含有关 Alpine Linux 安装的所有信息。

注意: ALIX 硬件无法运行 64 位软件。请使用 x86 版本的 Alpine。

连接到 ALIX 板

该板没有图形界面,因此在配置网络之前,我们需要通过串行连接进行配置。

我们需要修改 'syslinux.cfg',它现在位于我们的 CF 卡上。

将以下内容附加到以 'append' 开头的行。

console=tty1,38400 console=ttyS0,9600

这会将控制台输出发送到串行端口。

现在,您可以使用串行电缆和配置为 9600/8/N/1 的终端程序将计算机连接到 ALIX。

挂载

CF 卡已安装在 ALIX 板中,ALIX 板已安装在外壳中。


setup-alpine

配置新 Alpine 盒子的基本设置的命令是

setup-alpine


setup-webconf

接下来,我们要安装和配置 ACF(Web 配置),使您能够通过 Web 浏览器管理您的盒子

setup-webconf

该盒子现在运行着 ACF,您可以开始浏览它。
首先,您需要将其连接到网络并确定它收到的 IP 地址。

因为我们运行的是 Alpine_1.8,所以我们需要通过 Web 浏览器更改默认用户名/密码

  • 转到 https://{ip_of_our_ALIX_box}/
  • 使用用户名=alpine 密码=test123 登录
  • 从左侧菜单中选择“用户管理”,删除现有的默认帐户并创建一个新帐户
注意: 从现在开始,我们使用 ACF 进行配置和安装。如果我们需要使用控制台,我们会明确说明。

时间

我们需要设置这个盒子的时钟。
OpenVPN 需要正确的时间。

安装所需的软件包

  • 系统 > 软件包 > 可用 > acf-openntpd > “安装”

通过转到 {config} 选项卡并输入以下设置来配置 openntp 以设置时间

  • 选中/激活“启动时设置时间”框
  • 确认“多服务器”框包含有效的 ntp 服务器记录(例如“pool.ntp.org”)
  • 确认所有其他框为空(除非您有理由进行其他操作)

按 [保存] 完成

[启动] 服务并确认它正在运行。(结果显示在您按下 [启动] 的页面顶部)

现在我们需要确保该进程在下次重启时启动

  • 应用程序 > NTP(openntpd) > 状态 > “计划自动启动”

选择以下值

  • 启动顺序 = 30
  • 为关闭添加 kill 链接 = 是

使用 [保存] 按钮保存设置


sshd

安装所需的软件包

  • 系统 > 软件包 > 可用 > acf-openssh > “安装”

我们将私钥放入其中,以便能够远程管理此盒子

  • 应用程序 > ssh > 授权用户 > root “编辑此帐户”

将密钥粘贴到“SSH 证书内容”框中,然后按 [保存]

为了提高安全性,我们需要禁用“PasswordAuthentication”。
我们可以通过禁用 DNS 请求来加快连接速度。
在 {专家} 选项卡下,确保您具有以下设置,然后 [保存] 您的更改。

PasswordAuthentication no
UseDNS no

为了确保该进程在下次重启时启动

  • 应用程序 > ssh > 状态 > “计划自动启动”

选择以下值

  • 启动顺序 = 40
  • 为关闭添加 kill 链接 = 是

使用 [保存] 按钮保存设置


dhcpd

安装所需的软件包

  • 系统 > 软件包 > 可用 > acf-dhcp > “安装”

现在我们可以开始配置 dhcpd

  • 网络 > DHCP > 配置

我们配置全局设置并添加子网以分配 IP 地址。

我们需要修改 {专家} 选项卡中的一些值。
使用以下值更新配置(完成后按 [保存])。

ddns-update-style ad-hoc;

eth2 客户端应该可以访问 Internet。它们可能需要与 eth1 上的客户端不同的 DNS 服务器,eth1 上的客户端从内部 DNS 服务器获取其 DNS 记录。因此,我们将安装dnscache(请参阅以下说明),我们需要告诉 dhcp 将连接到 eth2 的客户端配置为使用此黑盒子作为 DNS 服务器。

接下来我们需要告诉dhcpd要监听的 NIC

注意: 这需要从控制台完成,因为 ACF-dhcp 缺少执行此操作的功能。

vi /etc/conf.d/dhcpd

修改文件使其看起来像这样

DHCPD_IFACE="eth1 eth2"

返回 ACF。启动 DHCP。

  • 网络 > DHCP > 配置 > [启动]

现在我们需要确保该进程在下次重启时启动

  • 应用程序 > dhcp > 状态 > “计划自动启动”

选择以下值

  • 启动顺序 = 90
  • 为关闭添加 kill 链接 = 是

使用 [保存] 按钮保存设置

dnscache

Internet 客户端将连接到 eth2 接口。这些客户端需要解析 Internet 地址。我们将安装 dnscache 以帮助客户端获得他们需要的东西。

安装所需的软件包

  • 系统 > 软件包 > 可用 > acf-dnscache > “安装”

在 {配置} 选项卡上配置它。

  • “要监听的 IP 地址”=(eth2 的 IP 地址)

通过按 [保存] 提交更改

我们还需要指定允许哪些客户端从 DNScache 解析地址。
这在 {允许的客户端} 选项卡中完成。
在“要响应的 IP 前缀”字段中输入应该能够从 dnscache 解析 DNS 的 IP 地址值。

注意: 如果您的客户端的 IP 为 10.0.0.2-10.0.0.254,您可以输入值“10.0.0”

为了确保该进程在下次重启时启动

  • 网络 > DNScache > 状态 > “计划自动启动”

选择以下值

  • 启动顺序 = 65
  • 为关闭添加 kill 链接 = 是

使用 [保存] 按钮保存设置

openvpn

安装所需的软件包

  • 系统 > 软件包 > 可用 > acf-openvpn > “安装”

为了确保该进程在下次重启时启动

  • 网络 > openvpn > 状态 > “计划自动启动”

选择以下值

  • 启动顺序 = 80
  • 为关闭添加 kill 链接 = 是

使用 [保存] 按钮保存设置

接下来,创建一个名为 'openvpn.conf' 的配置文件

  • 网络 > openvpn > 配置 >(在“文件名”字段中写入 'openvpn.conf',然后按 [创建])

现在我们在列表中有一个名为 'openvpn.conf' 的记录。通过选择“专家”操作来配置它。

我们的文件看起来像这样

client
dev tun
proto udp
remote "public IP" 1194
resolv-retry infinite
nobind
ns-cert-type server
persist-key
persist-tun
ca /etc/ssl/openvpn/cacert.pem
cert /etc/ssl/openvpn/mycert.pem
key /etc/ssl/openvpn/mykey.pem
comp-lzo
verb 3

按照以下说明创建证书并安装它们:使用 ACF 1.9 生成 SSL 证书
通过控制台键入以下命令来创建 'dh' 文件

cd /etc/ssl/openvpn/ && openssl dhparam -out dh1024.pem 1024


防火墙

安装所需的软件包

  • 系统 > 软件包 > 可用 > acf-shorewall > “安装”
sed -i 's/^STARTUP_ENABLED.*/STARTUP_ENABLED=Yes/' /etc/shorewall/shorewall.conf

在“专家”选项卡中修改以下配置文件。

区域

#ZONE	TYPE
fw      firewall
inet    ipv4
eth1    ipv4
eth2    ipv4
vpn     ipv4

接口

#ZONE   INTERFACE	BROADCAST	OPTIONS
inet    eth0
eth1    eth1            detect          dhcp
eth2    eth2            detect          dhcp
vpn     tun+            detect

策略

#SOURCE		DEST		POLICY
vpn             all             ACCEPT
eth1            vpn             ACCEPT
eth2            vpn             ACCEPT
all             all             REJECT

规则

#ACTION		SOURCE    DEST     PROTO   DEST PORT
ACCEPT          all       fw       tcp     22
ACCEPT          eth1      fw       tcp     80,443
ACCEPT          eth2      fw       tcp     80,443
ACCEPT          vpn       fw       tcp     80,443
DNS/ACCEPT      eth2      fw

为了确保该进程在下次重启时启动

  • 网络 > 防火墙 > 状态 > “计划自动启动”

选择以下值

  • 启动顺序 = 26
  • 为关闭添加 kill 链接 = 是

使用 [保存] 按钮保存设置

轮换日志

我们在这个盒子上的存储空间有限,因此我们必须防止日志文件变得太大。

为此,请激活 /var/log/messages 的轮换

  • 系统 > 系统日志 > 配置
    • “轮换前的最大大小 (KB)”= 1000
    • “要保留的轮换日志数”= 5

通过按下配置下方的 [保存] 按钮完成。
通过在同一页面上按 [重启] 来重启 syslog。


保存更改

此时,我们对系统进行了各种更改。为确保它们持久存在:首先,安装 lbu 的 ACF 模块

  • 系统 > 软件包 > 可用 > acf-alpine-conf > “安装”

现在我们在菜单中有了“本地备份”(转到那里)。

使用 {配置} 选项卡设置保存配置的位置(我们选择了 usb)。
在“包含的项目”框中添加“root/.ssh/”,以便我们之前添加的 ssh 密钥将被永久保存。

使用 {状态} 选项卡,通过按 [提交] 按钮来提交保存。
您的更改应永久保存到您的 USB 介质中。