在 ALIX.2D3 上使用 OpenVPN 客户端的经验
![]() 此板上使用的 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 板
该板没有图形界面,因此在配置网络之前,我们需要通过串行连接对其进行配置。
我们需要修改 'syslinux.cfg',它现在位于我们的 CF 卡上。
将以下内容附加到以 'append' 开头的行。
console=tty1,38400 console=ttyS0,9600
这会将控制台输出发送到串口。
现在,您可以使用串行电缆和终端程序(配置为 9600/8/N/1)将计算机连接到您的 ALIX。
挂载
CF 卡已安装在 ALIX 板中,并且该板已安装在外壳中。
setup-alpine
配置新的 Alpine box 的基本设置的命令是
setup-alpine
setup-webconf
接下来,我们要安装和配置 ACF(Web 配置),它使您可以通过 Web 浏览器管理您的 box
setup-webconf
该 box 现在运行着 ACF,您可以开始浏览它。
首先,您需要将其连接到网络并确定它收到的 IP 地址。
因为我们运行的是 Alpine_1.8,所以我们需要通过 Web 浏览器更改默认用户名/密码
- 转到 https://{ip_of_our_ALIX_box}/
- 使用用户名=alpine 密码=test123 登录
- 从左侧菜单中选择“用户管理”,删除现有的默认帐户并创建一个新帐户
时间
我们需要设置此 box 上的时钟。
OpenVPN 需要正确的时间。
安装所需的软件包
- 系统 > 软件包 > 可用 > acf-openntpd > “安装”
通过转到 {config} 选项卡配置 openntp 以设置时间,并输入以下设置
- 选中/激活“启动时设置时间”框
- 确认“多服务器”框包含有效的 ntp 服务器记录(例如 'pool.ntp.org')
- 确认所有其他框为空(除非您有理由这样做)
最后按 [保存]
[启动] 服务并确认它正在运行。(结果显示在您按下 [启动] 的页面顶部)
现在我们需要确保该进程在下次重启时启动
- 应用程序 > NTP(openntpd) > 状态 > “计划自动启动”
选择以下值
- 启动顺序 = 30
- 添加关闭链接 = 是
使用 [保存] 按钮保存设置
sshd
安装所需的软件包
- 系统 > 软件包 > 可用 > acf-openssh > “安装”
我们将我们的私钥放入其中,以便能够远程管理此 box
- 应用程序 > ssh > 授权用户 > root “编辑此帐户”
将密钥粘贴到“SSH 证书内容”框中,然后按 [保存]
为了提高安全性,我们需要禁用“PasswordAuthentication”。
我们可以通过禁用 DNS 请求来加速连接。
在 {Expert} 选项卡下,确保您具有以下设置,然后 [保存] 您的更改。
PasswordAuthentication no UseDNS no
为了确保该进程在下次重启时启动
- 应用程序 > ssh > 状态 > “计划自动启动”
选择以下值
- 启动顺序 = 40
- 添加关闭链接 = 是
使用 [保存] 按钮保存设置
dhcpd
安装所需的软件包
- 系统 > 软件包 > 可用 > acf-dhcp > “安装”
现在我们可以开始配置 dhcpd
- 网络 > DHCP > 配置
我们配置全局设置并添加子网以分配 IP 地址。
我们需要修改 {Expert} 选项卡中的一些值。
使用以下值更新配置(完成后按 [保存])。
ddns-update-style ad-hoc;
eth2 客户端应该可以访问互联网。它们可能需要与 eth1 上的客户端不同的 DNS 服务器,eth1 上的客户端从内部 DNS 服务器获取其 DNS 记录。因此我们将安装dnscache(请参阅以下说明),我们需要告诉 dhcp 配置连接到 eth2 的客户端使用此黑盒作为 DNS 服务器。
接下来我们需要告诉dhcpd要监听的 NIC
vi /etc/conf.d/dhcpd
修改文件,使其看起来像这样
DHCPD_IFACE="eth1 eth2"
返回 ACF。启动 DHCP。
- 网络 > DHCP > 配置 > [启动]
现在我们需要确保该进程在下次重启时启动
- 应用程序 > dhcp > 状态 > “计划自动启动”
选择以下值
- 启动顺序 = 90
- 添加关闭链接 = 是
使用 [保存] 按钮保存设置
dnscache
Internet 客户端将连接到 eth2 接口。这些客户端需要解析互联网地址。我们将安装 dnscache 以帮助客户端获得他们需要的东西。
安装所需的软件包
- 系统 > 软件包 > 可用 > acf-dnscache > “安装”
在 {config} 选项卡上配置它。
- “要监听的 IP 地址”=(eth2 的 IP 地址)
通过按 [保存] 提交更改
我们还需要指定允许哪些客户端从 DNScache 解析地址。
这在 {Allowed Clients} 选项卡中完成。
在“要响应的 IP 前缀”字段中输入应该能够从 dnscache 解析 DNS 的 IP 地址值。
为了确保该进程在下次重启时启动
- 网络 > DNScache > 状态 > “计划自动启动”
选择以下值
- 启动顺序 = 65
- 添加关闭链接 = 是
使用 [保存] 按钮保存设置
openvpn
安装所需的软件包
- 系统 > 软件包 > 可用 > acf-openvpn > “安装”
为了确保该进程在下次重启时启动
- 网络 > openvpn > 状态 > “计划自动启动”
选择以下值
- 启动顺序 = 80
- 添加关闭链接 = 是
使用 [保存] 按钮保存设置
接下来,创建一个名为 'openvpn.conf' 的配置文件
- 网络 > openvpn > 配置 > (在“文件名”字段中写入 'openvpn.conf',然后按 [创建])
现在我们在列表中有一个名为 'openvpn.conf' 的记录。选择“Expert”操作来配置它。
我们的文件看起来像这样
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
在 Expert 选项卡中修改以下配置文件。
区域
#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
- 添加关闭链接 = 是
使用 [保存] 按钮保存设置
轮换日志
我们在此 box 上的存储空间有限,因此我们必须防止日志文件变得太大。
为此,请激活 /var/log/messages 上的轮换
- 系统 > 系统日志 > 配置
- “轮换前的最大大小 (KB)”= 1000
- “要保留的轮换日志数”= 5
最后按下配置下方的 [保存] 按钮。
通过在同一页面上按 [重启] 来重启 syslog。
保存更改
此时,我们对系统进行了各种更改。为确保它们持久存在:首先,安装 lbu 的 ACF 模块
- 系统 > 软件包 > 可用 > acf-alpine-conf > “安装”
现在我们在菜单中有了“本地备份”(转到那里)。
使用 {Config} 选项卡设置保存配置的位置(我们选择了 usb)。
在“包含项”框中添加“root/.ssh/”,以便我们之前添加的 ssh 密钥将永久保存。
使用 {Status} 选项卡通过按 [Commit] 按钮来提交保存。
您的更改应永久保存到您的 USB 介质。