下一页 上一页 目录

4. 实施

在确定方向时,需要做出许多决策。以下小节详细介绍了我为获得可工作的原型而采取的一些路径。请根据您的环境进行修改。我将在适当的地方做出澄清说明。

我研究了几种 Live CD 发行版,并得出结论,DSL 最适合手头的目的。我考虑了以下几种:

  1. Ubuntu。这个 Live CD 期望相对高端的机器,并且拥有比本项目有用的应用程序多得多的应用程序。我没有尝试删除大量应用程序并进行精简,而是选择不使用这个。但是,如果您尝试向人们提供完整的桌面以及对内部网络的访问权限,这可能是一个不错的选择。
  2. PuppyLinux。这个 Live CD 看起来真的不错,但是我在弄清楚它用于其根目录的 SFS 文件系统时遇到了麻烦,并且能够更轻松地获得有关如何处理 Knoppix 压缩文件系统的说明和工具。
  3. Knoppix。像 Ubuntu 一样,这个 Live CD 对于本项目的特定目的来说也过于庞大。
  4. Damn Small Linux。这个 Live CD 只有 50 MB 的占用空间,几乎可以在任何硬件上运行,并且是我选择实施的发行版。

4.1 获取和修改基于 DSL 的 .ISO 文件。

选择 DSL 意味着我们依赖于 DSL 内置的自动查找、配置和通过 DHCP 连接到网络的能力。DSL 的无线支持非常有限,因此我们目前不支持无线。最终用户将需要一台通常通过其提供商的 DHCP 连接到 Internet 的机器,并使用普通的有线网卡来完成此操作。

  1. 全新安装 Ubuntu (http://www.ubuntu.com)、EdUbuntu (http://www.edubuntu.org)、xUbuntu (http://www.xubuntu.org) 或 kUbuntu (http://www.kubuntu.org)
  2. 使用 Synaptic 添加存储库(所有可用)
  3. 安装 qemu、open-vpn 和 cloop-utils
  4. 获取 ISO 文件(我推荐 dsl-3.0 ISO);希望我很快就能在互联网上提供我的原型 CD 镜像(不包含 VPN 密钥),供您下载。请参考“示例”部分 - 此 ISO 可能是您入门的好地方。
  5. 将 ISO 挂载到某个位置。
    1. mkdir /tmp/workingiso
      
    2. mount -t iso9660 -o loop dsl-3.0.iso /tmp/working.iso
      
  6. 解压 ISO 的压缩文件系统
    1. extract_compressed_fs /tmp/workingiso/KNOPPIX/KNOPPIX > /var/tmp/KNOPPIX-cloop
      
    2. 将其挂载到某个位置
      1. mkdir /tmp/workingiso.cloop
        
      2. mount -o loop /var/tmp/KNOPPIX-cloop /tmp/workingiso.cloop
        
  7. 现在您可以访问 CD 的内部工作原理,将其复制到您可以处理它的位置。
    1. 创建一个工作目录(例如 /home/jeff/Desktop/vpn-tree)
    2. tar -C /tmp/workingiso.cloop -cf - . | tar -C /home/jeff/Desktop/vpn-tree -xvpf -
      
  8. 同时复制 CD 的外部部分,您可以在其中处理它。
    1. 创建一个工作目录(例如 /home/jeff/Desktop/vpn-cd-tree)
    2. tar -C /tmp/workingiso -cf - . | tar -C /home/jeff/Desktop/vpn-cd-tree -xvpf -
      
  9. 使用您现在拥有的内容制作 CD 镜像,以确认您已成功完成此步骤且没有错误。
    1. mkisofs -pad -l -r -J -V "YOURVPN v0.1" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved  -o yourvpn.iso /home/jeff/Desktop/vpn-cd-tree/
      
  10. 假设以上操作成功,您现在可以使用以下命令进行测试:
    1. qemu -boot d -cdrom yourvpn.iso
      
  11. 现在您可以开始进行更改。
    1. 使用以下命令挂载您的 proc:
      mount -t proc none /home/jeff/Desktop/vpn-tree/proc
      
    2. chroot /home/jeff/Desktop/vpn-tree
      
    3. 对文件系统进行任何您想要的更改。
  12. 折腾完毕后,是时候写出您新的压缩文件镜像并制作 CD 了。
    1. 退出 chroot
    2. 卸载镜像的 proc(不要忘记此步骤,否则您稍后构建时将无法获得可工作的镜像)
    3. 制作压缩文件镜像
      mkisofs -L -R -l -V "YOURVPN ISO9660" -v -allow-multidot /home/jeff/Desktop/vpn-tree/ | create_compressed_fs - 65536 > /home/jeff/Desktop/vpn-cd-tree/KNOPPIX/KNOPPIX 
      
    4. 制作 CD 镜像
      mkisofs -pad -l -r -J -V "YOURVPN v0.2" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o yourvpn.iso /home/jeff/Desktop/vpn-cd-tree/
      
    5. 在模拟器中测试它(我倾向于喜欢 qemu...使用您喜欢的任何模拟器:vmware、xen、?)
      qemu -boot d -cdrom yourvpn.iso
      
  13. 根据需要重复上述步骤以获得所需的 ISO 镜像。
  14. 刻录镜像并享受。

4.2 关于修改 CD 上的软件的注释。

  1. 在 chroot 后,将 openvpn*.deb 解压到根文件系统。
  2. 确保所有正确的库都已复制到正确的位置。
    1. chroot
    2. ldd /usr/sbin/openvpn
    3. 转到主系统上的另一个根终端,并将任何库从主系统复制到 vpn-tree
    4. 创建 tun 节点:mknod /dev/net/tun c 10 200
  3. 通过编辑 vpn-cd-tree/boot/isolinux/boot.msg 文件并删除“^Xlogo.16”来删除 DSL 商业名片图形的加载。
  4. 通过编辑 vpn-cd-tree/boot/isolinux/isolinux.cfg 并将显示“PROMPT 1”的行更改为“PROMPT 0”,使其不等待启动选项。
  5. 编辑文件 vpn-tree/etc/skel/.xinitrc 以反映我们希望在桌面上发生的事情。删除将图标加载到桌面上的代码;删除使窗口透明的代码;添加建立 VPN 连接的代码;添加加载 rdesktop 并连接到正确机器的代码。
  6. 编辑启动的显示屏幕。
    1. 复制 vpn-cd-tree/boot/isolinux/minirt24.gz 到 /tmp
    2. gunzip minirt24.gz
    3. mount -o loop minirt24 /mnt
    4. 编辑 /etc/linuxrc 以显示指示机构名称的文本(您可以在此处放置适合您机构的任何内容)而不是“DSL”
    5. umount /mnt
    6. gzip minirt24
    7. 将 minirt24.gz 复制到 vpn-cd-tree/boot/isolinux/minirt24.gz

4.3 设置多用户 OpenVPN 服务器。

  1. 按照有关为服务器制作证书和密钥的说明进行操作。
  2. 您将需要输入 OpenVPN HOWTO 中涵盖的几项信息。
  3. 记住为客户端创建一个受密码保护的密钥。
  4. 根据需要设置所有配置。
  5. 对于每个客户端,您将需要
    1. 使用证书制作一个受密码保护的密钥
    2. 将证书和客户端密钥(仅限)放置在 vpn-tree/etc/openvpn/keys 目录中
    3. 调整 vpn-tree/etc/openvpn/openvpn.cfg 文件以指示正确的密钥文件(请参阅“示例”部分中的服务器配置文件)
    4. 调整 vpn-tree/opt/bootlocal.sh 中添加的路由
    5. 调整 vpn-tree/etc/skel/.xinitrc 以指向正确的 rdesktop IP。
  6. 重建 CD。
  7. 在模拟器中测试。
  8. 一旦它工作正常,可以刻录 ISO 或通过将 .ISO 放置在 win-qemu-yourvpn-cd 目录中并构建该 .ISO 来制作 qemu Windows 模拟器版本(之后不要忘记刻录它)。

4.4 参考资料:

  1. https://linuxjournal.cn/article/7246
  2. http://openvpn.net/howto.html
  3. http://www.damnsmalllinux.org
  4. http://www.ubuntu.com


下一页 上一页 目录