<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="通过LXC命令批量或单独开设NAT服务器以及维护(简称母鸡开小鸡)">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-05-23 07:38<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
通过LXC命令批量或单独开设NAT服务器以及维护(简称母鸡开小鸡) 


一键虚拟化：https://virt.spiritlhl.net/


GitHub：https://github.com/spiritLHLS/lxc


更新：https://github.com/oneclickvirt/lxd


硬件要求:




XML/HTML代码


    系统：Debian 8+, Ubuntu 18+(推荐)，系统越新越好

    架构：推荐KVM、VMWARE虚拟化

    内存：内存至少512MB

    硬盘：硬盘(系统盘)至少10G

    网络：独立的IPV4地址，IPV6可有可无，带宽能下载脚本就行，网络能连接Github的raw页面就行

    PS: 如果硬件非常好资源很多，可使用PVE批量开KVM的

    PS: 如果硬件资源更烂，虚拟化不支持，可使用docker版本的，适配面更广





脚本检测:


使用后续脚本的务必执行本命令检测母鸡是否符合要求






XML/HTML代码


    bash &lt;(wget -qO- --no-check-certificate https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/pre_check.sh)




项目特点：




XML/HTML代码


    本套脚本开发使用的Ubuntu20，Ubuntu别的长期维护版本应该也没问题，Debian无法使用zfs时自动切换别的存储类型

    已设置同时进行TCP和UDP转发，除了SSH端口其他的映射内网外网端口一致

    已设置支持开出的LXC容器进行docker嵌套虚拟，默认普通版本和纯探针版本使用debian11系统

    已屏蔽容器内可能用于滥用的工具包和IPV4网络的TCP/UDP协议的端口( 3389 8888 54321 65432 )，以防止容器被用于扫描和爆破，且可外置进程检查有问题自动停机

    已支持一键为LXC容器配置IPV6地址(前提是母鸡有IPV6子网，无IPV6地址则不配置)

    一定要在 /root 的路径下运行本仓库脚本，且使用一键脚本的不要删除路径下的ssh.sh和config.sh文件

    保证你要开的盘为默认的系统盘(sda或者sda1)而不是挂载的盘(sdb之类的)，不确定的使用fdisk -l和df查看

    挂载其他盘的详看 其他说明

    一键脚本支持自定义限制所有内容，普通版本支持多次运行批量生成不覆盖先前生成的配置





手动安装:


新手推荐，避免有bug不知道怎么修






XML/HTML代码


    批量生成NAT服务器

    支持批量重复生成(多次批量开NAT服务器，且不覆盖原配置)

    批量重复生成仅限于普通版本的配置，不支持纯探针版本




普通版本：




(带1个SSH端口，25个外网端口)


开出的小鸡配置：1核256MB内存1GB硬盘限速250Mbps带宽






XML/HTML代码


    #关闭防火墙

    apt update

    apt install curl wget sudo dos2unix ufw -y

    ufw disable







开设虚拟内存SWAP ：




内存看你开多少小鸡，这里如果要开8个，换算需要2G内存，实际内存如果是512MB内存，还需要开1.5G，保守点开2G虚拟内存即可


执行下面命令，输入1，再输入2048，代表开2G虚拟内存 。






XML/HTML代码


    curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/swap.sh -o swap.sh &amp;&amp; chmod +x swap.sh &amp;&amp; bash swap.sh





安装LXD：


实际swap开的虚拟内存应该是实际内存的2倍，也就是开1G是合理的，上面我描述的情况属于超开了






XML/HTML代码


    apt install snapd -y

    snap install lxd

    /snap/bin/lxd init







如果上面的命令中出现下面的错误 (snap &quot;lxd&quot; assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))


使用命令修补后再进行lxd的安装 




XML/HTML代码


    snap install core









如果无异常，上面三行命令执行结果正常，一般的选项回车默认即可。






选择配置物理盘大小(提示默认最小1GB那个选项)，一般我填空闲磁盘大小减去内存大小后乘以0.95并向下取整，这里我填了10GB


提示带auto的更新image的选项记得选no，避免更新占用系统


测试lxc有没有软连接上






XML/HTML代码


    lxc -h




如果报错则执行以下命令软连接lxc命令




XML/HTML代码


    ! lxc -h &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo 'alias lxc=&quot;/snap/bin/lxc&quot;' &gt;&gt; /root/.bashrc &amp;&amp; source /root/.bashrc

    export PATH=$PATH:/snap/bin




连接后再测试lxc命令是否有报错找不到




手动批量生成LXC虚拟化的小鸡(默认内存和硬盘大小)




lxc若命令无问题，执行初始化开小鸡，这一步最好放screen中后台挂起执行，开小鸡时长与你开几个和母鸡配置相关


执行下面命令加载开机脚本




XML/HTML代码


    rm -rf init.sh

    wget https://github.com/oneclickvirt/lxd/raw/main/scripts/init.sh

    chmod 777 init.sh

    apt install dos2unix -y

    dos2unix init.sh




下面命令为开小鸡名字前缀为tj的10个小鸡




XML/HTML代码


    ./init.sh tj 10





有时候init.sh的运行路径有问题，此时建议前面加上sudo强制根目录执行






多次批量生成LXC虚拟化的小鸡


可自定义内存和硬盘大小






有执行过上面的手动批量生成过也没问题，配置是继承的不覆盖，如果需要多次批量生成小鸡，可使用






XML/HTML代码


    curl -L https://github.com/oneclickvirt/lxd/raw/main/scripts/add_more.sh -o add_more.sh &amp;&amp; chmod +x add_more.sh &amp;&amp; bash add_more.sh




可多次运行批量生成小鸡，且继承前面已生成的部分在后面添加，可自定义内存和硬盘大小




纯探针版本(只有一个SSH端口)


详细信息


开出的小鸡配置：1核128MB内存300MB硬盘限速200Mbps带宽






XML/HTML代码


    #关闭防火墙

    apt update

    apt install curl wget sudo dos2unix ufw -y

    ufw disable





开设虚拟内存


内存看你开多少小鸡，这里如果要开10个，换算需要1G内存，实际内存如果是512MB内存，还需要开0.5G，保守点开1G虚拟内存即可, 执行下面命令，输入1，再输入1024，代表开1G虚拟内存。






XML/HTML代码


    curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/swap.sh -o swap.sh &amp;&amp; chmod +x swap.sh &amp;&amp; bash swap.sh





实际swap开的虚拟内存应该是实际内存的2倍，也就是开1G是合理的，再多就超开了






XML/HTML代码


    apt install snapd -y

    snap install lxd

    /snap/bin/lxd init





如果上面的命令中出现下面的错误


(snap &quot;lxd&quot; assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))


使用命令修补后再进行lxd的安装






XML/HTML代码


    snap install core





如果无异常，上面三行命令执行结果正常，一般的选项回车默认即可。


选择配置物理盘大小(提示默认最小1GB那行)，一般我填空闲磁盘大小减去内存大小后乘以0.95并向下取整，提示带auto的更新image的选项记得选no，避免更新占用。




软连接lxc命令




XML/HTML代码


    ! lxc -h &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo 'alias lxc=&quot;/snap/bin/lxc&quot;' &gt;&gt; /root/.bashrc &amp;&amp; source /root/.bashrc

    export PATH=$PATH:/snap/bin




测试lxc有没有软连接上




XML/HTML代码


    lxc -h




lxc命令无问题，执行初始化开小鸡，这一步最好放screen中后台挂起执行，开小鸡时长与你开几个和母鸡配置相关


加载开机脚本




XML/HTML代码


    rm -rf least.sh

    wget https://github.com/oneclickvirt/lxd/raw/main/scripts/least.sh

    chmod 777 least.sh

    apt install dos2unix -y

    dos2unix least.sh




下列命令最后一行为开小鸡名字前缀为tj的10个小鸡




XML/HTML代码


    ./least.sh tj 10




有时候least.sh的运行路径有问题，此时建议前面加上sudo强制根目录执行。




查看log文件：


开完小鸡后，具体信息会生成在当前目录下的log文件中，格式如下






XML/HTML代码


    1号服务器名称 密码 ssh端口 外网端口起始 外网端口终止

    2号服务器名称 密码 ssh端口 外网端口起始 外网端口终止




如果想要查看，只需在当前目录执行以下命令打印log文件即可 




XML/HTML代码


    cat log





注意事项：

不要拿该脚本开出的小鸡当生产环境，lxc虚拟化不支持换内核，dd，开启bbr，纯探针版本(普通版本无问题)挂载warp等操作 


虚拟小鸡想要查看是否在线 




XML/HTML代码


    #查看所有

    lxc list

    #查看个例

    lxc info 服务器名字

    #启动个例

    lxc start 服务器名字

    #停止个例

    lxc stop 服务器名字

    #删除个例

    lxc delete -f 服务器名字

    #进入内部

    lxc exec 服务器名字 /bin/bash

    #退出则输入exit回车即可

    #删除所有LXC容器

    lxc list | awk '{print $2}' | grep -v &quot;^$&quot; | xargs -I {} lxc delete -f {}

    #在容器内执行删除无用日志

    sudo apt-get autoremove

    sudo apt-get clean

    sudo find /var/log -type f -delete

    sudo find /var/tmp -type f -delete

    sudo find /tmp -type f -delete

    sudo find /var/cache/apt/archives -type f -delete





一键脚本老手推荐方便快捷


环境要求：Ubuntu 18+(推荐)，Debian 8+(仅限x86_64架构)

只生成一个NAT服务器，可自定义限制所有内容 


一键安装lxd环境 ：




XML/HTML代码


    初始化LXC环境

    如果是全新的服务器，务必保证apt update和apt install curl都无问题再执行本脚本

    且自开机起最好等待5分钟后再执行以下命令，避免系统默认设置中就执行了本脚本导致apt源卡死

    这里的虚拟内存是说要开的SWAP大小，存储池则是你所有要开的小鸡占的盘的大小的总和

    如果是Debian系统的母鸡，务必在screen中执行本脚本，避免长期运行时SSH中断导致ZFS编译安装失败




环境安装过程中可能需要重启服务器再次执行以加载含zfs的内核 




XML/HTML代码


    curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/lxdinstall.sh -o lxdinstall.sh &amp;&amp; chmod +x lxdinstall.sh &amp;&amp; bash lxdinstall.sh





例子：

如果系统盘除去已占用空间还有18G硬盘空余，想开2G虚拟内存(2048MB的SWAP)，15G的存储池，则依次输入2048和15 


只开一个NAT服务器


下载开机脚本 




XML/HTML代码


    rm -rf buildone.sh

    wget https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/buildone.sh

    chmod 777 buildone.sh

    apt install dos2unix -y

    dos2unix buildone.sh





开NAT服务器

内存大小以MB计算，硬盘大小以GB计算，下载速度上传速度以Mbit计算，是否启用IPV6不一定要填Y或者N，没有这个参数也行 


如果外网起端口和外网止端口都设置为0则不做区间外网端口映射了，只映射基础的SSH端口，注意不能为空，不进行映射需要设置为0 




XML/HTML代码


    ./buildone.sh 小鸡名称 内存大小 硬盘大小 SSH端口 外网起端口 外网止端口 下载速度 上传速度 是否启用IPV6(Y or N)




示例 




XML/HTML代码


    ./buildone.sh test 256 2 20001 20002 20025 300 300 N





这样就是创建一个名为test的小鸡，内存256MB，硬盘2G，SSH端口20001，内外网起止端口20002~20025，下载和上传速度都设置为300Mbit，且不自动设置外网IPV6地址，如果已通过以上方法生成过小鸡，还需要批量生成小鸡，可使用手动安装部分的脚本，但注意先删除测试小鸡再进行批量生成小鸡 






XML/HTML代码


    lxc delete -f test

    rm -rf test

    ls







需要查看信息则执行 


cat 小鸡名字 


其他配置




XML/HTML代码


    以下的配置安装会加重母鸡的负担，非必要不要安装

    自动配置IPV6地址

    (非必须，不使用的也没问题)

    该脚本仅适用于母鸡有给IPV6子网且是/64的，且母鸡绑定了子网的第一个IP做IPV6

    自动为LXD创建的LXC容器配置IPV6地址

    已集成到buildone.sh中可使用变量控制且无需事先下载，该脚本可不手动使用，在使用buildone.sh时配置Y开启即可




下载脚本




XML/HTML代码


    curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh &amp;&amp; chmod +x build_ipv6_network.sh




自动为容器配置IPV6映射地址 




XML/HTML代码


    bash build_ipv6_network.sh 容器名称




映射完毕会打印信息 


示例(给test容器自动配置IPV6地址，配置完成会写入一个test_v6的文件信息)




XML/HTML代码


    bash build_ipv6_network.sh test





屏蔽容易被滥用的端口的出入流量以屏蔽端口和屏蔽滥用工具包，(非必须，该脚本仅仅是为了防止容器滥用方便，不装的也没问题)，事前预防 






XML/HTML代码


    curl -L https://github.com/oneclickvirt/lxd/raw/main/scripts/rules.sh -o rules.sh &amp;&amp; chmod +x rules.sh &amp;&amp; bash rules.sh





使用screen配置监控屏蔽某些进程的执行，遇到某些进程的出现直接关闭容器，如需停止监控可使用screen命令停止lxc_moniter这个名字的窗口并删除，(非必须，该脚本仅仅是为了防止容器滥用方便，不装的也没问题)，事后停机 






XML/HTML代码


    curl -L https://github.com/oneclickvirt/lxd/raw/main/scripts/build_monitor.sh -o build_monitor.sh &amp;&amp; chmod +x build_monitor.sh &amp;&amp; bash build_monitor.sh







一键安装开lxd母鸡所需要的带vnstat环境的常用预配置环境，(非必须，该脚本仅仅是为了站点对接监控方便，不装的也没问题) 。




XML/HTML代码


    curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/backend.sh -o backend.sh &amp;&amp; chmod +x backend.sh &amp;&amp; bash backend.sh





一键安装母鸡可视化操作的面板，(非必须，该面板只是为了方便可视化操作，没有也没问题) 






XML/HTML代码


    lxc config set core.https_address [::]

    lxc config set core.trust_password some-secret-string

    snap install lxdmosaic




安装完毕后打开母鸡IP地址，按照提示设置admin的密码，其他一路默认就能使用面板了。
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
