【发布时间】:2019-06-25 19:56:55
【问题描述】:
我有一个在 OpenShift (Kubernetes) 中运行的软件,其许可证基于 MAC 地址。重启应用时,容器的MAC地址发生变化,需要申请新的license文件。
由于 k8s pod 中没有静态 MAC 地址,我想欺骗对 NetworkInterface.getHardwareAddress() 的 Java 调用,以欺骗软件认为 MAC 地址仍然相同。
Enumeration enumeration = NetworkInterface.getNetworkInterfaces();
while (enumeration.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface) enumeration.nextElement();
if (networkInterface.isLoopback() || networkInterface.isPointToPoint() || networkInterface.isVirtual()) {
continue;
}
if (networkInterface.isUp()) {
byte[] arrayOfByte = networkInterface.getHardwareAddress();
if (arrayOfByte != null && arrayOfByte.length == 6) {
StringBuilder stringBuilder = new StringBuilder();
for (byte b = 0; b < arrayOfByte.length; b++) {
if (b != 0) {
stringBuilder.append(":");
}
stringBuilder.append(String.format("%02x", arrayOfByte[b]));
}
System.out.println(networkInterface.getName() + ": " + stringBuilder);
}
}
}
实际:eth0: 01:14:4d:ec:01:42
预期:eth0:ee:ee:ee:ee:ee:ee
【问题讨论】:
标签: java kubernetes openshift mac-address