ZEBRA IPv6 Printers User Guide
- August 6, 2024
- ZEBRA
Table of Contents
ZEBRA IPv6 Printers
Important Instruction
ZEBRA and the stylized Zebra head are trademarks of Zebra Technologies Corporation, registered in many jurisdictions worldwide. All other trademarks are the property of their respective owners. ©2024 Zebra Technologies Corporation and/or its affiliates. All rights reserved.
Information in this document is subject to change without notice. The software described in this document is furnished under a license agreement or nondisclosure agreement. The software may be used or copied only in accordance with the terms of those agreements.
For further information regarding legal and proprietary statements, please go to:
SOFTWARE:
zebra.com/informationpolicy
COPYRIGHTS: zebra.com/copyright
WARRANTY: zebra.com/warranty
END USER LICENSE AGREEMENT: zebra.com/eula/
INTELLECTUAL PROPERTY: ip.zebra.com
Terms of Use
Proprietary Statement
This manual contains proprietary information of Zebra Technologies Corporation and its subsidiaries (“Zebra Technologies”). It is intended solely for the information and use of parties operating and maintaining the equipment described herein. Such proprietary information may not be used, reproduced, or disclosed to any other parties for any other purpose without the express, written permission of Zebra Technologies.
Product Improvements
Continuous improvement of products is a policy of Zebra Technologies. All specifications and designs are subject to change without notice.
Liability Disclaimer
Zebra Technologies takes steps to ensure that its published Engineering specifications and manuals are correct; however, errors do occur. Zebra Technologies reserves the right to correct any such errors and disclaims liability resulting therefrom.
Limitation of Liability
In no event shall Zebra Technologies or anyone else involved in the creation, production, or delivery of the accompanying product (including hardware and software) be liable for any damages whatsoever (including, without limitation, consequential damages including loss of business profits, business interruption, or loss of business information) arising out of the use of, the results of use of, or inability to use such product, even if Zebra Technologies has been advised of the possibility of such damages. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above limitation or exclusion may not apply to you.
Publication Date
July 29, 2024
Introduction
The Internet Protocol version 6 (IPv6) IETF Draft standard was released in 1998. While drafting the IPv6 standard, they designed protocol improvements from their experiences working with IPv4. One big reason for IPv6 adoption is due to the limited number of IPv4 addresses available and their allocation. Various schemes using IPv4 have been devised over the years that have pushed out the required switch to IPv6. Even with these, the IPv6 switchover is in the plans for many organizations. This guide explains the use and configuration of IPv6 with Zebra printers. It also addresses the option to run in dual stack mode and the implications and some items to be aware of when doing so.
An IPv6 address consists of 128 bits with the top bits determining the network and the bottom the unique address of the device. A device will have multiple IPv6 addresses for the various “domains” it is a part of. Two examples of this are the link local address for the local network and a globally routable address for networks beyond the local network. You should be familiar with these concepts to properly use IPv6. This guide will not cover this information, but it will provide information on how to configure and use the printer on your network with an IPv6 environment.
The IPv6 address :: is used by the printer to signify no IPv6 address.
Destination addresses omit the prefix, while source addresses used by the printer will contain the network prefix as part of the address.
Examples:
-
Source address:
“internal_wired.ipv6.addresses”:”fe80::207:4dff:fe94:1704/64,fd04:1795::207:4dff:fe94:
1704/64,fd04:1795::e0b/64″ -
Destination address:
“internal_wired.ipv6.gateways”:”fe80::202:b3ff:febf:9d18″
Configuration
By default, the printer runs only in IPv4 mode. The first step to use IPv6 is to configure the settings of the printer
- Configure the IP versions to be used and the method for address acquisition.
SGD| Description| Access| Choices/Range| Default
---|---|---|---|---
ip.address_mode| IP protocol for network operation: ipv4, ipv6, all (both).| RW| ipv4, ipv6, all| ipv4
wlan.ipv6.address_type internal_wired.ipv6.address_type| Determines the methods used to get an IPv6 address. Choices are “static” and “auto” with “auto” being the default.
When set to “auto”, the Router Advertisement packets determine the usage of SLAAC and/or DHCPv6.| RW| static, auto| auto - Set up additional SGD as needed or desired depending on the address_type selection. Choose:
- Option a. for Static Mode
- Option b. for Auto Mode
Static Mode
Enter the static address and gateway and any DNS servers/domains to be used.
SGD | Description | Access | Choices/Range | Default |
---|---|---|---|---|
wlan.ipv6.static.addresses internal_wired.ipv6.static. addresses | IPv6 |
address(es) to be used when address_type is static. The SGD returns “::” when
no static address has been set.
The printer can only support one link local address and will select its own.
Therefore, do not include a local address in the static address list.| RW|
Maximum of three addresses| ::
wlan.ipv6.static.gateways internal_wired.ipv6.static. gateways| IPv6 gateway
to be used when address_type is static. The SGD returns “::” when no static
address has been set. Only one address is supported.
The printer will not place a gateway into use if it doesn’t have a IPv6
address on the same network (as defined by the prefix length associated with
that address). A link local address for the gateway will always be placed into
use.| RW| Maximum of one address| ::
wlan.ip.dns.servers internal_wired.ip.dns.servers|
NOTE: This SGD has special behavior. The
retrieved value is always the value currently in use. The Set value, if valid,
is saved, but may not be reflected in the value returned from a Get.
Get: A space separated list IP address(es) of DNS server(s) that are
currently in use by the device, up to three. The values to be used are a
combination of addresses received from DHCPv4, DHCPv6, and user assigned
values using the following rules:
- At least one spot will be allocated to any IP-enabled version.
- IPv4 addresses will take at least two slots if at least two IPv4 addresses are provided.
- The user-set value will only be used if static/permanent addresses are used.
- Set: IP addresses to be used as DNS servers when using static/permanent addresses.
NOTE: A printer or network reset is required to take effect.
| RW| Maximum of three IP addresses (IPv4 and/or IPv6)|
wlan.ip.dns.domain internal_wired.ip.dns.domain|
NOTE: T his SGD has special behavior. The
retrieved value is always the value currently in use. The Set value, if valid,
is saved, but not reflected in the value returned from a Get.
Get: A space separated list of domains currently in use by the device, up to five domains. The list will contain a mixture of domains received from DHCPv4, DHCPv6, and user-assigned values depending upon address acquisition settings. The values used follow these rules:
- IPv4 sources are the priority.
- If IPv4 source provide five domains, then there will only be IPv4 sourced domains.
- If there are slots to fit more domains, then they will be filled IPv6 sources.
Set: values to be used by the device as DNS domains when a static/permanent address is in use.
NOTE: When the user sets the domain in the SGD, it requires a network reset for it to take effect.
| RW| 0-256
characters Max five domains
|
To check the values set by the user for DNS servers/domains, use the following SGDs:
SGD | Description | Access | Choices/ Range | Default |
---|
wlan.ip.dns.servers_user_value
internal_wired.ip.dns. servers_user_value| This SGD displays value that the
user has set for wlan.ip.dns.servers or internal _wired.ip.dns.servers.
This value will be used only if static/permanent acquisition mode is used.| R|
Maximum of three IP addresses (IPv4 and/or IPv6)|
Auto Mode
The Router advertisement packet determines the use of SLAAC and/or DHCPv6. For DHCPv6, you can enable the use of DHCPv6 option 39.
SGD | Description | Access | Choices/ Range | Default |
---|
wlan.ipv6.dhcp.option39_enable
internal_wired.ipv6.dhcp. option39_enable| Include option 39 in DHCPv6
communication.| RW| on, off| on
wlan.ipv6.dhcp.option39_format
internal_wired.ipv6.dhcp. option39_format| The format string that determines
the value for option 39 used in DHCPv6 packets.| RW| 0-127 characters|
- Perform either a network or printer reset so the changes go into effect for the printer. You can use ip.reset or device.reset and send “yes”.
- After the printer reboots and is back on the network, use the following SGDs to determine the IPv6 status.
SGD | Description | Access | Choices/ Range | Default |
---|
wlan.ipv6.addresses
internal_wired.ipv6.addresses| List of IPv6 address(es) in use by the printer
on this interface.| R| Maximum of ten addresses|
interface.network.active.ipv6.addresses| List of active IPv6 address.| R|
Maximum of ten addresses|
wlan.ipv6.gateways
internal_wired.ipv6.gateways| List of gateways in use by the printer on this
interface.| R| Maximum of ten addresses|
interface.network.active.ipv6.gateways| The active IPv6 network gateway(s).|
R| Maximum of ten addresses|
interface.network.active. ipv6.address_type| The methods used to get an IPv6
address. When set to “auto”, the Router Advertisement packets will determine
the usage of SLAAC and/or DHCP.| R| static, auto| auto
interface.network.active. ipv6.dhcp_server_duid| The DUID as provided by the
DHCPv6 server that provided the printer network information if DHCPv6 was
used.| R| 0-384
characters|
You can read these variables to find out about the DNS values in use (these are duplicates of what is above. Now you are using the Get value to see what is active):
SGD | Description | Access | Choices/ Range | Default |
---|---|---|---|---|
wlan.ip.dns.servers internal_wired.ip.dns.servers | ** |
NOTE: This SGD has special behavior. The
retrieved value is always the value currently in use. The Set value, if valid,
is saved, but not reflected in the value returned from a Get.
Get:** A space separated list IP address(es) of DNS server(s) that are the
currently in use by the device, up to three. The values to be used are a
combination of addresses received from DHCPv4, DHCPv6, and user-assigned
values using the following rules:
- At least one spot will be allocated to any IP-enabled version.
- IPv4 addresses will take at least two slots if at least two IPv4 addresses are provided.
- User set value will only be used if static/permanent addresses are used.
- Set: IP addresses to be used as DNS servers when using static/permanent addresses.
NOTE: A printer or network reset is required to take effect.
| RW| Maximum of three IP addresses (IPv4 and/or IPv6)|
wlan.ip.dns.domain internal_wired.ip.dns.domain|
NOTE: This SGD has special behavior. The
retrieved value is always the value currently in use.
The Set value, if valid, is saved, but not reflected in the value returned
from a Get. Get: A space separated list of domains currently in use by the
device, up to 5 domains. The list will contain a mixture of domains received
from DHCPv4, DHCPv6, and user-assigned values depending upon address
acquisition settings. The values used follow these rules:
- IPv4 sources are the priority.
- If IPv4 source provide five domains, then there will only be IPv4 sourced domains.
- If there are slots to fit more domains, then they will be filled IPv6 sources.
- Set: values to be used by the device as DNS domains when a static/permanent address is in use.
NOTE: When the user sets the domain in the SGD, it requires a network reset for it to take effect.
| RW| 0-256
characters Max 5 domains|
If you are using DHCPv6 the following commands will also be meaningful:
SGD | Description | Access | Choices/ Range | Default |
---|---|---|---|---|
wlan.ipv6.dhcp.option39_value internal_wired.ipv6.dhcp. option39_value | The |
processed value derived from option39_format field and used as the DHCPv6 option39 value.| R| 0-127
characters
|
wlan.ipv6.dhcp.option39_fqdn internal_wired.ipv6.dhcp. option39_fqdn| The
fully qualified domain name of the
printer as given by the DHCPv6 server.
| R| 0-127
characters
|
wlan.ipv6.dhcp.lease.length internal_wired.ipv6.dhcp.lease. length| The number
of seconds the DHCP lease will last| R| 0-4294967295|
wlan.ipv6.dhcp.lease.time_left internal_wired.ipv6.dhcp.lease. time_left| The
number of seconds left on a DGCP lease for IPv6| R| 0-4294967295|
wlan.ipv6.dhcp.lease.last_attempt internal_wired.ipv6.dhcp.lease.
last_attempt| The time of the last attempt to obtain a DHCPv6 lease for this
interface| R| 0-4294967295|
The device should now be up and functioning on all IPv6 supported protocols on the printer.
Hostname SGDs
There are several SGDs that take in hostnames or IP addresses as values. IPv4 and IPv6 addresses are both supported in the following:
- ip.remote (address for ip.ping_remote)
- ip.mirror.server
Some SGDs combine hostname/IP address with a port number using a colon character. The IPv6 address format containing multiple colon characters causes parsing issues. We have adopted the standard of encasing IPv6 addresses within for these (for example, https://[fc04:1795::cafe:feed]:6783). The following SGDs require this formatting:
- weblink.ip.conn1.location
- weblink.ip.conn2.location
- weblink.ip.conn1.test.location
- weblink.ip.conn2.test.location
- weblink.ip.conn1.proxy
- weblinks.ip.conn2.proxy
- weblinks.zebra_connector.proxy
The following SGD supports IPv6 addresses with or without the [].
- ip.ntp.servers
Running IPv4 and IPv6 Simultaneously
Running with both IPv4 and IPv6 enabled can cause communication complexity. Some of the items that contribute to this and may cause communication failure can include:
- IP versions supported on or not by devices
- DNS resolution of hostnames for one/both IP versions
- address acquisition timing differences between IP versions
- network router configuration
Other Notes
Delayed support for IPv6: On the first release, not all applications will communicate over IPv6. The following may not work over IPv6:
- MQTT
- POP3
- Avalanche
- Firewall
- CSR generation using an IPv6 address
- ZBI
- Alerts: SMTP, TCP, UDP, HTTP
- IPsec
- syslog remote server
DHCPv6 does not have a mechanism to inform a device what the address prefix length is for an IPv6 address. RFC 5942 talks about communication issues that can arise if the wrong prefix is assumed. For that reason, DHCPv6 addresses assume a 128-bit prefix length. This will cause all IPv6 communication using that address to be initially sent to the gateway as it doesn’t know which devices are on link. The gateway should advertise its link local address so that the printer can communicate with it as being on the same link.
COLD START alerts will now only be sent once to each configured destination. This is a change from previous behavior, where the alert would be sent on any network configuration change. It now is only generated the first time the printer acquires an IP Address.
SENDING ALERTS – Alerts are now queued upon the event being triggered, but are only sent to their destination when an IP Address is acquired for the IP Version of the configured alert’s destination:
- In IPv4 mode, the printer waits until it acquires an IPv4 Address to send the alert.
- In IPv6 mode, the printer waits until it has a routable IPv6 Address to send the alert.
- In “all” mode, the printer queues the alerts when either an IPv4 or IPv6 address is acquired, but they are not sent to the destinations until an address is acquired for IPv4 destinations or a routable IPv6 address is acquired for IPv6 destinations
This means an alert will remain in the queue (possibly indefinitely) until an IP address is acquired of the correct version to satisfy the destination of that alert.
IPv6 PING support – Customers can use SGD or CPCL command to initiate a ping request.
-
SGD/JSON:
{}{“ip.remote”:”fe80::207:4dff:fe4e:7681″,”ip.ping_len”:”100″,”ip.ping_remote”:”3″} -
CPCL:
! U1 TCP‐ACCESS PING fd04:1795::1
Troubleshooting
- With wlan.ipv6.address_type or internal_wired.ipv6.address_type set to “auto”, the printer looks at the flags on the Router Advertisement to determine what mode to run DHCPv6 in. It also acquires SLAAC address(es) from these packets. If you are not seeing DHCPv6 requests and are expecting them, look at your router setup and ensure they are advertising the correct information. If you have multiple routers on the network, make sure they all advertise the same flag values as the printer takes the DHCPv6 values from the first one it processes.
- You cannot assign a link local IPv6 address as a static address. The printer determines its own IPv6 link local address.
- Because the printer does IPv6 duplicate addresses detection, it will detect if the address it is going to put into use is already in use on the network. When this is determined, the printer creates an alert, puts an entry in syslog (if enabled), and does not use the IPv6 address. If the source of the duplication is removed from the network and you want the printer to use that address, you need to reset the printer before it will attempt to use that specific IPv6 address.
- The device IPv6 ping functionality has two known issues: a) you cannot ping localhost (::1) and b) it cannot ping when it only has a link local address, even to another link local address.
- Upgrading to Link-OS 7.0 will continue to use the current setting in ip.firewall.whitelist_in. If downgrading back to an earlier version of the firmware, the values that were used before the upgrade will be the only addresses that can communicate with the printer. If you changed the values after the upgrade, the SGD will NOT report the values that are currently being used for the feature. Set the ip.firewall.whitelist_in SGD to the values you want used to resolve the inconsistency.
- If you put an IPv4 address(es) in ip.firewall.whitelist_in, then the printer can acquire an IPv6 address via DHCPv6 and SLAAC, but it cannot talk with anything over IPv6 as all IPv6 communications are blocked. IPv6 address support is a feature for a future release.
- The IPv6 prefix length should be 64 bits or less. Going beyond that will affect SLAAC support and may
affect other communications.• If you are having issues talking with certain IPv6 addresses and your printer has many IPv6 addresses, you should check the network infrastructure hardware (APs, routers) to see if there is a limit to the number of IPv6 addresses they support per device. If so, reduce the number of IP addresses on each device and/or limit the IPv6 address assignment adjustments.
Customer Support
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>