如何在 systemd-nspawn 容器中映射多个端口?

如何在 systemd-nspawn 容器中映射多个端口?

我正在编写一个依赖于 nspawn 的容器管理器脚本,并且该容器正在使用虚拟以太网连接(-n opt)。

但看起来nspawn目前只支持单个端口的端口映射

如何将多个端口从客户机映射到主机?

nspawn 文档

我的剧本

答案1

-p 支持在一个命令中多次添加,因此我使用循环来一一添加端口

这是我的代码

set port_range $_flag_port
                if echo $port_range | grep -qs -
                    set -e port_mapping_tcp
                    set -e port_mapping_udp
                    set -e port_mapping
                    set port_counter 0
                    for port_arrary in (seq (echo $port_range | awk -F "-" '{print $1}') (echo $port_range | awk -F "-" '{print $2}'))
                        set port_counter (math $port_counter+1)
                        set port_mapping_tcp[$port_counter] "-ptcp:$port_arrary"
                        set port_mapping_udp[$port_counter] "-pudp:$port_arrary"
                    end
                else
                    if echo $port_range | grep -qs ,
                        set -e port_mapping_tcp
                        set -e port_mapping_udp
                        set -e port_mapping
                        set port_counter 0
                        for port_arrary in (echo $port_range | string split ,)
                            set port_counter (math $port_counter+1)
                            set port_mapping_tcp[$port_counter] "-ptcp:$port_arrary"
                            set port_mapping_udp[$port_counter] "-pudp:$port_arrary"
                        end
                    else
                        set port_mapping_tcp "-ptcp:$_flag_port"
                        set port_mapping_udp "-pudp:$_flag_port"
                    end
                end
                sudo systemd-nspawn --resolv-conf=off $port_mapping_tcp $port_mapping_udp -bnq -D $container

相关内容