### Environment

* Dubbo version: 2.7.13

### Steps to reproduce this issue
NetUtils.ignoreNetworkInterface方法使用matches判断是否是要忽略的网卡，
当网卡名称包含圆括号时，如INTEL(R) XXX
即使完全相同，结果也是false： ”INTEL(R) XXX".matches("INTEL(R) XXX" 结果为false！

比较了3.0的代码，该方法已经删除了DUBBO_NETWORK_IGNORED_INTERFACE相关的处理，建议2.7系列做一下同步修订。
private static final int RND_PORT_START = 30000;
    private static final int RND_PORT_RANGE = 10000;
    
    private static final int MIN_PORT = 1;
    private static final int MAX_PORT = 65535;
    private static final Pattern ADDRESS_PATTERN = Pattern.compile("^\\d{1,3}(\\.\\d{1,3}){3}\\:\\d{1,5}$");
    private static final Pattern LOCAL_IP_PATTERN = Pattern.compile("127(\\.\\d{1,3}){3}$");
    private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
    private static final Map<String, String> HOST_NAME_CACHE = new LRUCache<>(1000);
    private static volatile InetAddress LOCAL_ADDRESS = null;
    private static final String SPLIT_IPV4_CHARACTER = "\\.";
    private static final String SPLIT_IPV6_CHARACTER = ":";
    /**
     * store the used port.
     * the set used only on the synchronized method.
     */
    private static BitSet USED_PORT = new BitSet(65536);
    public static int getRandomPort() {
        return RND_PORT_START + ThreadLocalRandom.current().nextInt(RND_PORT_RANGE);
    }
    public synchronized static int getAvailablePort() {
        int randomPort = getRandomPort();
        return getAvailablePort(randomPort);
    }
    public synchronized static int getAvailablePort(int port) {
        if (port < MIN_PORT) {
            return port = MIN_PORT;
        }
        for (int i = port; i < MAX_PORT; i++) {