如何通过networking信息来识别客户?

我正在为多个客户部署一个Linux设备。 设备执行连接到我的服务器的应用程序。 我需要唯一标识一个客户,并映射到服务器端的ID。 我不能单独为每个客户更改软设备,我不想检查其MAC地址以简化批量部署。 我可以通过(和服务器)更改应用程序。 这个问题有什么好的解决方法?

我想在服务器端parsing设备IP地址到主机名。 在设备首次连接到服务器之前,应该使用该客户主机名称configuration服务器。 我担心主机名,因为客户可以有几个主机名,可以提供无效的主机名用于服务器configuration。 此外,我担心可能需要一些时间的DNS更新。 我可能不会parsing最近分配给正确的主机名的新的公共IP地址吗?

编辑:

这些设备是现成的Linux电脑。 在部署之前,我们将其解压缩,并使用我们的应用程序将准备好的包含Linux映像的SD卡进行切换。 无需启动它。 设备不能轻松连接到监视器,只能从networking访问。

我想不出通过正常的万无一失的方式来做到这一点,networking发现意味着如果你不愿意定制设备或愿意logging信息,如MAC地址或其他一些唯一的标识符,并与客户端配对logging您在服务器上的文件。

想想互联网服务提供商如何跟踪有线调制解调器那样的客户端设备(CPE):几乎总是有一个序列号,当然还有MAC地址,以及客户ID和CRM或库存pipe理应用程序一起存储。

你可以尝试使用公共IP的反向DNS,你的盒子正在NAT /出去,但是这并不总是告诉你你需要什么来匹配客户端。

而且,由于您使用的是SSL,为什么不使用客户端证书(或SSH密钥对并通过SSH隧道传输您的自定义协议)呢? 这将是一个独特的,易于编写脚本的解决scheme,具有大量的开放式图书馆和社区支持,可以保证服务器和客户端的真实性。