diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm
index 9cb88bc..5d67374 100644
--- a/Proxmox/Install.pm
+++ b/Proxmox/Install.pm
@@ -1099,6 +1099,12 @@ sub extract_data {
 
         my $ethdev = Proxmox::Install::Config::get_mngmt_nic();
         my $cidr = Proxmox::Install::Config::get_cidr();
+        my $vlan = Proxmox::Install::Config::get_vlan();
+
+        if (defined $vlan) {
+            $ethdev .= ".$vlan";
+        }
+
         my $gateway = Proxmox::Install::Config::get_gateway();
 
         if ($iso_env->{cfg}->{bridged_network}) {
diff --git a/Proxmox/Install/Config.pm b/Proxmox/Install/Config.pm
index da476da..ea28cbf 100644
--- a/Proxmox/Install/Config.pm
+++ b/Proxmox/Install/Config.pm
@@ -261,6 +261,7 @@ sub get_fqdn { # virtual config
 
 sub set_cidr { set_key('cidr', $_[0]); }
 sub get_cidr { return get('cidr'); }
+sub get_vlan { return get('vlan'); }
 
 sub get_ip_addr { #'virtual config
     my $cidr = get('cidr') // return;
diff --git a/proxmox-auto-installer/src/answer.rs b/proxmox-auto-installer/src/answer.rs
index 88f4c87..cea5cb1 100644
--- a/proxmox-auto-installer/src/answer.rs
+++ b/proxmox-auto-installer/src/answer.rs
@@ -186,6 +186,7 @@ struct NetworkInAnswer {
     pub cidr: Option<CidrAddress>,
     pub dns: Option<IpAddr>,
     pub gateway: Option<IpAddr>,
+    pub vlan: Option<u16>,
     #[serde(default)]
     pub filter: BTreeMap<String, String>,
 }
@@ -219,6 +220,7 @@ impl TryFrom<NetworkInAnswer> for Network {
                     cidr: network.cidr.unwrap(),
                     dns: network.dns.unwrap(),
                     gateway: network.gateway.unwrap(),
+                    vlan: network.vlan,
                     filter: network.filter,
                 }),
             })
@@ -254,6 +256,7 @@ pub struct NetworkManual {
     pub cidr: CidrAddress,
     pub dns: IpAddr,
     pub gateway: IpAddr,
+    pub vlan: Option<u16>,
     pub filter: BTreeMap<String, String>,
 }
 
diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs
index 7d42f2c..2fdb6df 100644
--- a/proxmox-auto-installer/src/utils.rs
+++ b/proxmox-auto-installer/src/utils.rs
@@ -66,6 +66,7 @@ fn get_network_settings(
         network_options.address = settings.cidr.clone();
         network_options.dns_server = settings.dns;
         network_options.gateway = settings.gateway;
+        network_options.vlan = settings.vlan;
         network_options.ifname = get_single_udev_index(&settings.filter, &udev_info.nics)?;
     }
     info!("Network interface used is '{}'", &network_options.ifname);
@@ -494,6 +495,7 @@ pub fn parse_answer(
         domain: network_settings.fqdn.domain(),
         cidr: network_settings.address,
         gateway: network_settings.gateway,
+        vlan: network_settings.vlan,
         dns: network_settings.dns_server,
 
         first_boot: InstallFirstBootSetup::default(),
diff --git a/proxmox-auto-installer/tests/parse-answer.rs b/proxmox-auto-installer/tests/parse-answer.rs
index 6754374..e7836d3 100644
--- a/proxmox-auto-installer/tests/parse-answer.rs
+++ b/proxmox-auto-installer/tests/parse-answer.rs
@@ -129,6 +129,7 @@ mod tests {
             full_fqdn_from_dhcp_with_default_domain,
             hashed_root_password,
             minimal,
+            network_vlan,
             nic_matching,
             specific_nic,
             zfs,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json b/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
index 0c1f032..f4b4b23 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/btrfs.json
@@ -18,6 +18,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "btrfs_opts": {
     "compress": "zlib"
   },
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/btrfs_raid_level_uppercase.json b/proxmox-auto-installer/tests/resources/parse_answer/btrfs_raid_level_uppercase.json
index cb6711c..88fb75c 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/btrfs_raid_level_uppercase.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/btrfs_raid_level_uppercase.json
@@ -18,6 +18,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "btrfs_opts": { "compress": "off" },
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json b/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json
index d5ffddd..331a210 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match.json
@@ -20,6 +20,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "zfs_opts": {
       "arc_max": 2048,
       "ashift": 12,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json
index 78a5e0c..23ca3b6 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_all.json
@@ -17,6 +17,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "zfs_opts": {
       "arc_max": 2048,
       "ashift": 12,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json
index 2e65fce..631cd66 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/disk_match_any.json
@@ -24,6 +24,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "zfs_opts": {
       "arc_max": 2048,
       "ashift": 12,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/first_boot.json b/proxmox-auto-installer/tests/resources/parse_answer/first_boot.json
index fafde51..eff4227 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/first_boot.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/first_boot.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 1, "ordering_target": "network-pre" }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp.json b/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp.json
index 5ec6656..860d5b2 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_empty_dhcp_domain_setting.json b/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_empty_dhcp_domain_setting.json
index 5ec6656..860d5b2 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_empty_dhcp_domain_setting.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_empty_dhcp_domain_setting.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_no_dhcp_domain_with_default_domain.json b/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_no_dhcp_domain_with_default_domain.json
index 7ed46a2..aeaf145 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_no_dhcp_domain_with_default_domain.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/fqdn_from_dhcp_no_dhcp_domain_with_default_domain.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/full_fqdn_from_dhcp_with_default_domain.json b/proxmox-auto-installer/tests/resources/parse_answer/full_fqdn_from_dhcp_with_default_domain.json
index 7ed46a2..aeaf145 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/full_fqdn_from_dhcp_with_default_domain.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/full_fqdn_from_dhcp_with_default_domain.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/hashed_root_password.json b/proxmox-auto-installer/tests/resources/parse_answer/hashed_root_password.json
index 4e049bd..a33aca5 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/hashed_root_password.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/hashed_root_password.json
@@ -17,5 +17,6 @@
   },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/minimal.json b/proxmox-auto-installer/tests/resources/parse_answer/minimal.json
index 0339dbc..3d79f68 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/minimal.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/minimal.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json b/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json
index 49240b4..3e4fdd4 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/specific_nic.json
@@ -15,5 +15,6 @@
   "root_password": { "plain": "12345678" },
   "target_hd": "/dev/sda",
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "first_boot": { "enabled": 0 }
 }
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/zfs.json b/proxmox-auto-installer/tests/resources/parse_answer/zfs.json
index 622f6d6..0b9b912 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/zfs.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/zfs.json
@@ -18,6 +18,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "zfs_opts": {
       "arc_max": 2048,
       "ashift": 12,
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/zfs_raid_level_uppercase.json b/proxmox-auto-installer/tests/resources/parse_answer/zfs_raid_level_uppercase.json
index 46b8344..033168e 100644
--- a/proxmox-auto-installer/tests/resources/parse_answer/zfs_raid_level_uppercase.json
+++ b/proxmox-auto-installer/tests/resources/parse_answer/zfs_raid_level_uppercase.json
@@ -19,6 +19,7 @@
   "mngmt_nic": "eno1",
   "root_password": { "plain": "12345678" },
   "timezone": "Europe/Vienna",
+  "vlan": null,
   "zfs_opts": {
     "arc_max": 2048,
     "ashift": 12,
diff --git a/proxmox-installer-common/src/options.rs b/proxmox-installer-common/src/options.rs
index 48c77c9..1f849cb 100644
--- a/proxmox-installer-common/src/options.rs
+++ b/proxmox-installer-common/src/options.rs
@@ -483,6 +483,7 @@ pub struct NetworkOptions {
     pub address: CidrAddress,
     pub gateway: IpAddr,
     pub dns_server: IpAddr,
+    pub vlan: Option<u16>,
 }
 
 impl NetworkOptions {
@@ -507,6 +508,7 @@ impl NetworkOptions {
             address: CidrAddress::new(Ipv4Addr::new(192, 168, 100, 2), 24).unwrap(),
             gateway: Ipv4Addr::new(192, 168, 100, 1).into(),
             dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+            vlan: None,
         };
 
         if let Some(ip) = network.dns.dns.first() {
@@ -715,6 +717,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
 
@@ -727,6 +730,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
 
@@ -739,6 +743,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
 
@@ -751,6 +756,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
     }
@@ -767,6 +773,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
 
@@ -779,6 +786,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
 
@@ -791,6 +799,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 0, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
     }
@@ -829,6 +838,7 @@ mod tests {
                 address: CidrAddress::new(Ipv4Addr::new(192, 168, 100, 2), 24).unwrap(),
                 gateway: IpAddr::V4(Ipv4Addr::new(192, 168, 100, 1)),
                 dns_server: Ipv4Addr::new(192, 168, 100, 1).into(),
+                vlan: None,
             }
         );
     }
diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs
index 66cea72..23e43d2 100644
--- a/proxmox-installer-common/src/setup.rs
+++ b/proxmox-installer-common/src/setup.rs
@@ -580,6 +580,7 @@ pub struct InstallConfig {
     #[serde(serialize_with = "serialize_as_display")]
     pub cidr: CidrAddress,
     pub gateway: IpAddr,
+    pub vlan: Option<u16>,
     pub dns: IpAddr,
 
     pub first_boot: InstallFirstBootSetup,
diff --git a/proxmox-tui-installer/src/main.rs b/proxmox-tui-installer/src/main.rs
index 15ee5d3..ad78d6d 100644
--- a/proxmox-tui-installer/src/main.rs
+++ b/proxmox-tui-installer/src/main.rs
@@ -516,6 +516,14 @@ fn network_dialog(siv: &mut Cursive) -> InstallerView {
             "DNS server address",
             EditView::new().content(options.dns_server.to_string()),
         )
+        .child(
+            "VLAN TAG (optional)",
+            EditView::new().content(
+                options.vlan
+                    .map(|v| v.to_string())
+                    .unwrap_or_default(),
+            ),
+        )
         .with_name("network-options");
 
     InstallerView::new(
@@ -552,6 +560,16 @@ fn network_dialog(siv: &mut Cursive) -> InstallerView {
                     .parse::<IpAddr>()
                     .map_err(|err| err.to_string())?;
 
+                let vlan_str = view
+                    .get_value::<EditView, _>(5)
+                    .ok_or("failed to retrieve VLAN")?;
+
+                let vlan = if vlan_str.trim().is_empty() {
+                    None
+                } else {
+                    Some(vlan_str.trim().parse::<u16>().map_err(|e| format!("Invalid VLAN: {e}"))?)
+                };
+
                 if address.addr().is_ipv4() != gateway.is_ipv4() {
                     Err("host and gateway IP address version must not differ".to_owned())
                 } else if address.addr().is_ipv4() != dns_server.is_ipv4() {
@@ -565,6 +583,7 @@ fn network_dialog(siv: &mut Cursive) -> InstallerView {
                         address,
                         gateway,
                         dns_server,
+                        vlan,
                     })
                 }
             });
diff --git a/proxmox-tui-installer/src/setup.rs b/proxmox-tui-installer/src/setup.rs
index b90c7dc..5114106 100644
--- a/proxmox-tui-installer/src/setup.rs
+++ b/proxmox-tui-installer/src/setup.rs
@@ -41,6 +41,7 @@ impl From<InstallerOptions> for InstallConfig {
             cidr: options.network.address,
             gateway: options.network.gateway,
             dns: options.network.dns_server,
+            vlan: options.network.vlan,
 
             first_boot: InstallFirstBootSetup::default(),
         };
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/network_vlan2.json b/proxmox-auto-installer/tests/resources/parse_answer/network_vlan2.json
new file mode 100644
index 0000000..4b93e6d
--- /dev/null
+++ b/proxmox-auto-installer/tests/resources/parse_answer/network_vlan2.json
@@ -0,0 +1,20 @@
+{
+  "autoreboot": 1,
+  "cidr": "10.10.10.10/24",
+  "country": "at",
+  "dns": "10.10.10.1",
+  "domain": "testinstall",
+  "filesys": "ext4",
+  "gateway": "10.10.10.1",
+  "hdsize": 223.57088470458984,
+  "existing_storage_auto_rename": 1,
+  "hostname": "pveauto",
+  "keymap": "de",
+  "mailto": "mail@no.invalid",
+  "mngmt_nic": "enp129s0f1np1",
+  "root_password": { "plain": "12345678" },
+  "target_hd": "/dev/sda",
+  "timezone": "Europe/Vienna",
+  "vlan": 123,
+  "first_boot": { "enabled": 0 }
+}
diff --git a/proxmox-auto-installer/tests/resources/parse_answer/network_vlan2.toml b/proxmox-auto-installer/tests/resources/parse_answer/network_vlan2.toml
new file mode 100644
index 0000000..fad56c6
--- /dev/null
+++ b/proxmox-auto-installer/tests/resources/parse_answer/network_vlan2.toml
@@ -0,0 +1,19 @@
+[global]
+keyboard = "de"
+country = "at"
+fqdn = "pveauto.testinstall"
+mailto = "mail@no.invalid"
+timezone = "Europe/Vienna"
+root-password = "12345678"
+
+[network]
+source = "from-answer"
+cidr = "10.10.10.10/24"
+dns = "10.10.10.1"
+vlan = 123
+gateway = "10.10.10.1"
+filter.ID_NET_NAME = "enp129s0f1np1"
+
+[disk-setup]
+filesystem = "ext4"
+disk-list = ["sda"]
