import re


def is_valid_iqn(iqn):
    """
    Validates if an iSCSI/iSER IQN is well formed.

    :type iqn: str
    :param iqn: The IQN to validate.  For example:
        'iqn.1993-08.org.debian:01:dea714656496'

    :rtype: bool
    :return: True or False depending on whether iqn passes validation.
    """
    if iqn is None:
        return False

    match = re.match(r'^(?:iqn\.[0-9]{4}-[0-9]{2}(?:\.[A-Za-z](?:[A-Za-z0-9\-]'
                     r'*[A-Za-z0-9])?)+(?::.*)?|eui\.[0-9A-Fa-f]{16})', iqn)

    if not match:
        return False

    return True