From 4666d36ab47396bfcecb52c78b4322df89d24e75 Mon Sep 17 00:00:00 2001 From: benok Date: Tue, 11 Mar 2025 18:19:56 +0900 Subject: [PATCH 1/4] Get gateway address from dhcp --- src/make_mod.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/make_mod.sh b/src/make_mod.sh index 8b9aca6..f1fd94f 100755 --- a/src/make_mod.sh +++ b/src/make_mod.sh @@ -271,7 +271,7 @@ guest_lxc_ipconfig(){ #### IP attribution if [ "$GS_NETCONF" == "dhcp" ]; then pct set "$key" --net"$CS_NET_ETH" \ - name="$CS_NET_NAME""$CS_NET_ETH",ip=dhcp,bridge="$GS_NETBR",gw="$GS_GATE" >/dev/null + name="$CS_NET_NAME""$CS_NET_ETH",ip=dhcp,bridge="$GS_NETBR" >/dev/null pct set "$key" --nameserver "$GS_DNS00 $GS_DNS01" >/dev/null # pct set "$key" --searchdomain "local" >/dev/null else From df0eb03ec5cc3fa8d4938f119463b90309b86495 Mon Sep 17 00:00:00 2001 From: benok Date: Tue, 11 Mar 2025 20:46:53 +0900 Subject: [PATCH 2/4] Accept dhcp instead of ip addr --- src/chk_mod.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/chk_mod.sh b/src/chk_mod.sh index 2084f29..00f90bb 100755 --- a/src/chk_mod.sh +++ b/src/chk_mod.sh @@ -91,9 +91,11 @@ chk_args(){ exit 1 fi elif [ "$1" == "iplist" ]; then # syntax of list ip adresse like 192.168.2.XX,XX.XX - if ! [[ $3 =~ ^(([0-9]{1,3}\.){3}[0-9]{1,3}(,[0-9]{1,3})*$)|^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then + if ! [[ $3 == "dhcp" ]]; then + if ! [[ $3 =~ ^(([0-9]{1,3}\.){3}[0-9]{1,3}(,[0-9]{1,3})*$)|^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then msg_error "Argument: '$3' for IP list does not follow the required nomenclature" exit 1 + fi fi elif [ "$1" == "vmid" ]; then # syntax of list vmimd like 100,101,102,103 IFS=',' read -ra nums <<< "$3" From 3789a010dbe8e36f14a9a684f3e19fb20c05d36d Mon Sep 17 00:00:00 2001 From: benok Date: Tue, 11 Mar 2025 20:47:59 +0900 Subject: [PATCH 3/4] Improve net config display for dhcp --- src/set_mod.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/set_mod.sh b/src/set_mod.sh index 147ad71..8690372 100755 --- a/src/set_mod.sh +++ b/src/set_mod.sh @@ -59,7 +59,11 @@ display_shape(){ msg_info_inline "Network" msg_syntax_nb " (device_type:'$QS_NET0', interface:'$QS_NET_ETH', bridge_set:'$GS_NETBR')" msg_info_inline "Network values" - msg_syntax_nb " (gateway:'$GS_GATE', attribute_ip:'$GS_NETCONF', cidr:'$GS_CIDR')" + if [[ "$GS_NETCONF" == "dhcp" ]]; then + msg_syntax_nb " (attribute_ip:'$GS_NETCONF')" + else + msg_syntax_nb " (gateway:'$GS_GATE', attribute_ip:'$GS_NETCONF', cidr:'$GS_CIDR')" + fi msg_info_inline "DNS/Search domain" msg_syntax_nb " (DNS00:'$GS_DNS00', DNS01:'$GS_DNS01')" msg_info_inline "Start on boot" @@ -88,7 +92,11 @@ display_shape(){ msg_info_inline "Network" msg_syntax_nb " (device_name:'$CS_NET_NAME', interface:'$CS_NET_ETH', bridge_set:'$GS_NETBR')" msg_info_inline "Network values" - msg_syntax_nb " (gateway:'$GS_GATE', attribute_ip:'$GS_NETCONF', cidr:'$GS_CIDR')" + if [[ "$GS_NETCONF" == "dhcp" ]]; then + msg_syntax_nb " (attribute_ip:'$GS_NETCONF')" + else + msg_syntax_nb " (gateway:'$GS_GATE', attribute_ip:'$GS_NETCONF', cidr:'$GS_CIDR')" + fi msg_info_inline "DNS/Search domain" msg_syntax_nb " (DNS00:'$GS_DNS00', DNS01:'$GS_DNS01')" msg_info_inline "Start on boot" From d27c8cfed53a93783b330d7104113f29d90ec31e Mon Sep 17 00:00:00 2001 From: benok Date: Thu, 13 Mar 2025 18:04:56 +0900 Subject: [PATCH 4/4] Use dns settings from dhcp server by default, but can override --- config.cfg | 1 + src/make_mod.sh | 8 ++++++-- src/set_mod.sh | 12 ++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/config.cfg b/config.cfg index 9508204..369b6e4 100755 --- a/config.cfg +++ b/config.cfg @@ -39,6 +39,7 @@ GS_CIDR="24" # Define your CIDR GS_NETBR="vmbr0" # Define network bridge (default: vmbr0) GS_DNS00="1.1.1.1" # Default DNS resolver GS_DNS01="8.8.8.8" # Default secondary DNS resolver +GS_OVERRIDE_DNS_FROM_DHCP="0" # Override DNS settings when you use DHCP server (value: 0|1) ####################################################################################################################################### # CLOUD-INIT GUESTS SETTINGS diff --git a/src/make_mod.sh b/src/make_mod.sh index f1fd94f..18688d2 100755 --- a/src/make_mod.sh +++ b/src/make_mod.sh @@ -115,7 +115,9 @@ guest_qm_ipconfig(){ #### IP attribution if [ "$GS_NETCONF" == "dhcp" ]; then qm set "$key" --ipconfig"$QS_NET_ETH" ip=dhcp >/dev/null - qm set "$key" --nameserver "$GS_DNS00 $GS_DNS01" >/dev/null + if [ "$GS_OVERRIDE_DNS_FROM_DHCP" = "1" ]; then + qm set "$key" --nameserver "$GS_DNS00 $GS_DNS01" >/dev/null + fi # TODO qm set "$key" --searchdomain "local" >/dev/null else qm set "$key" --ipconfig"$QS_NET_ETH" ip="${slug_serv[$key]}/$GS_CIDR,gw=$GS_GATE" >/dev/null @@ -272,7 +274,9 @@ guest_lxc_ipconfig(){ if [ "$GS_NETCONF" == "dhcp" ]; then pct set "$key" --net"$CS_NET_ETH" \ name="$CS_NET_NAME""$CS_NET_ETH",ip=dhcp,bridge="$GS_NETBR" >/dev/null - pct set "$key" --nameserver "$GS_DNS00 $GS_DNS01" >/dev/null + if [ "$GS_OVERRIDE_DNS_FROM_DHCP" = "1" ]; then + qm set "$key" --nameserver "$GS_DNS00 $GS_DNS01" >/dev/null + fi # pct set "$key" --searchdomain "local" >/dev/null else pct set "$key" --net"$CS_NET_ETH" \ diff --git a/src/set_mod.sh b/src/set_mod.sh index 8690372..a04b608 100755 --- a/src/set_mod.sh +++ b/src/set_mod.sh @@ -65,7 +65,11 @@ display_shape(){ msg_syntax_nb " (gateway:'$GS_GATE', attribute_ip:'$GS_NETCONF', cidr:'$GS_CIDR')" fi msg_info_inline "DNS/Search domain" - msg_syntax_nb " (DNS00:'$GS_DNS00', DNS01:'$GS_DNS01')" + if [[ "$GS_NETCONF" == "dhcp" ]] && [[ "$GS_OVERRIDE_DNS_FROM_DHCP" == "0" ]]; then + msg_syntax_nb " (DNS: 'use dhcp')" + else + msg_syntax_nb " (DNS00:'$GS_DNS00', DNS01:'$GS_DNS01')" + fi msg_info_inline "Start on boot" msg_syntax_nb " (value:'$QS_ONBOOT')" msg_info_inline "Start immediatly after creation" @@ -98,7 +102,11 @@ display_shape(){ msg_syntax_nb " (gateway:'$GS_GATE', attribute_ip:'$GS_NETCONF', cidr:'$GS_CIDR')" fi msg_info_inline "DNS/Search domain" - msg_syntax_nb " (DNS00:'$GS_DNS00', DNS01:'$GS_DNS01')" + if [[ "$GS_NETCONF" == "dhcp" ]] && [[ "$GS_OVERRIDE_DNS_FROM_DHCP" == "0" ]]; then + msg_syntax_nb " (DNS: 'use dhcp')" + else + msg_syntax_nb " (DNS00:'$GS_DNS00', DNS01:'$GS_DNS01')" + fi msg_info_inline "Start on boot" msg_syntax_nb " (value:'$CS_ONBOOT')" msg_info_inline "Start immediatly after creation"