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

관련 정보