diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java
new file mode 100644
index 000000000..0edbae85f
--- /dev/null
+++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java
@@ -0,0 +1,58 @@
+package cn.stylefeng.roses.kernel.rule.util;
+
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.net.NetworkInterface;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 获取mac地址的工具类
+ *
+ * @author fengshuonan
+ * @date 2020/11/13 12:59
+ */
+public class MacAddressUtil {
+
+ /**
+ * 获取mac的地址信息列表
+ *
+ * 一台机器不一定有多个网卡,所以返回的是数组
+ *
+ * @author fengshuonan
+ * @date 2020/11/13 13:00
+ */
+ public static List getMacList() throws Exception {
+ java.util.Enumeration en = NetworkInterface.getNetworkInterfaces();
+ StringBuilder sb = new StringBuilder();
+ ArrayList tmpMacList = new ArrayList<>();
+ while (en.hasMoreElements()) {
+ NetworkInterface iface = en.nextElement();
+ List addrs = iface.getInterfaceAddresses();
+ for (InterfaceAddress addr : addrs) {
+ InetAddress ip = addr.getAddress();
+ NetworkInterface network = NetworkInterface.getByInetAddress(ip);
+ if (network == null) {
+ continue;
+ }
+ byte[] mac = network.getHardwareAddress();
+ if (mac == null) {
+ continue;
+ }
+ sb.delete(0, sb.length());
+ for (int i = 0; i < mac.length; i++) {
+ sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
+ }
+ tmpMacList.add(sb.toString());
+ }
+ }
+ if (tmpMacList.size() <= 0) {
+ return tmpMacList;
+ }
+
+ // 去重,同一个网卡的ipv4,ipv6得到的mac都是一样的
+ return tmpMacList.stream().distinct().collect(Collectors.toList());
+ }
+
+}
\ No newline at end of file