1# @ohos.net.netFirewall(网络防火墙)(系统接口)
2
3本模块提供网络防火墙能力,为应用程序提供配置查询防火墙能力。 通过配置防火墙策略,应用程序可以对机器进行防火墙策略管控,可配置ip、域名、dns策略,并支持策略的增加、修改、删除、查询等操作。同时提供了防火墙拦截记录的查询功能。
4
5> **说明:**
6> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7> 本模块为系统接口。
8
9## 导入模块
10
11```ts
12import netfirewall from '@ohos.net.netFirewall';
13```
14
15## netFirewall.setNetFirewallPolicy
16
17setNetFirewallPolicy(userId: number, policy: NetFirewallPolicy): Promise\<void>
18
19设置防火墙状态。
20
21**系统接口**:此接口为系统接口。
22
23**需要权限**:ohos.permission.MANAGE_NET_FIREWALL
24
25**系统能力**:SystemCapability.Communication.NetManager.netfirewall
26
27**参数:**
28
29| 参数名 | 类型                                    | 必填 | 说明                                         |
30| ------ | ----------------------------------------| ---- | -------------------------------------------- |
31| userId | number                                  | 是   | 系统中的多用户用户ID,不能是不存在的用户ID。 |
32| policy | [NetFirewallPolicy](#netfirewallpolicy) | 是   | 设置的防火墙策略。                           |
33
34**返回值:**
35
36| 类型                | 说明                                     |
37| ------------------- | ---------------------------------------- |
38| Promise\<void>      | 无返回结果的Promise对象。                |
39
40**错误码:**
41
42| 错误码ID | 错误信息                                            |
43| -------  | ----------------------------------------------------|
44| 201      | Permission denied.                                  |
45| 202      | Non-system applications use system APIs.            |
46| 401      | Parameter error.                                    |
47| 2100001  | Invalid parameter value.                            |
48| 2100002  | Operation failed. Cannot connect to service.        |
49| 2100003  | System internal error.                              |
50| 29400000 | The specified user does not exist.                  |
51
52**示例:**
53
54```ts
55import { netFirewall } '@kit.NetworkKit';
56import { BusinessError } from '@kit.BasicServicesKit';
57
58let policy: netFirewall.NetFirewallPolicy = {
59  isOpen: true,
60  inAction: netFirewall.FirewallRuleAction.RULE_DENY,
61  outAction: netFirewall.FirewallRuleAction.RULE_ALLOW
62};
63netFirewall.setNetFirewallPolicy(100, policy).then(() => {
64  console.info("set firewall policy success.");
65}).catch((error : BusinessError) => {
66  console.error("set firewall policy failed: " + JSON.stringify(error));
67});
68```
69
70## netFirewall.getNetFirewallPolicy
71
72getNetFirewallPolicy(userId: number): Promise\<NetFirewallPolicy>
73
74查询防火墙状态。
75
76**系统接口**:此接口为系统接口。
77
78**需要权限**:ohos.permission.GET_NET_FIREWALL
79
80**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
81
82**参数:**
83
84| 参数名   | 类型                   | 必填 | 说明                                           |
85| -------- | ---------------------- | ---- | ---------------------------------------------- |
86| userId   | number                 | 是   | 系统中的多用户用户ID,不能是不存在的用户ID。   |
87
88**返回值:**
89
90| 类型                                              | 说明                                  |
91| ------------------------------------------------- | ------------------------------------- |
92| Promise\<[NetFirewallPolicy](#netfirewallpolicy)> | 以Promise形式返回当前用户防火墙策略。 |
93
94
95**错误码:**
96
97| 错误码ID | 错误信息                                            |
98| -------  | ----------------------------------------------------|
99| 201      | Permission denied.                                  |
100| 202      | Non-system applications use system APIs.            |
101| 401      | Parameter error.                                    |
102| 2100001  | Invalid parameter value.                            |
103| 2100002  | Operation failed. Cannot connect to service.        |
104| 2100003  | System internal error.                              |
105| 29400000 | The specified user does not exist.                  |
106
107**示例:**
108
109```ts
110import { netFirewall } '@kit.NetworkKit';
111import { BusinessError } from '@kit.BasicServicesKit';
112
113netFirewall.getNetFirewallPolicy(100).then((result: netFirewall.NetFirewallPolicy) => {
114  console.info('firewall policy: ', JSON.stringify(result));
115}, (reason: BusinessError) => {
116  console.error('get firewall policy failed: ', JSON.stringify(reason));
117});
118```
119
120## netFirewall.addNetFirewallRule
121
122addNetFirewallRule(rule: NetFirewallRule): Promise\<number>
123
124添加防火墙规则。
125
126**系统接口**:此接口为系统接口。
127
128**需要权限**:ohos.permission.MANAGE_NET_FIREWALL
129
130**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
131
132**参数:**
133
134| 参数名   | 类型                                              | 必填 | 说明         |
135| -------- | ------------------------------------------------- | ---- | ------------ |
136| rule    |  [NetFirewallRule](#netfirewallrule)               | 是   | 防火墙规则。 |
137
138**返回值:**
139
140| 类型                      | 说明                     	                                  |
141| ------------------------- | ----------------------------------------------------------- |
142| Promise\<number>          | 以Promise形式返回防火墙规则ID,防火墙规则ID由系统自动生成。 |
143
144**错误码:**
145
146| 错误码ID | 错误信息                                                                 |
147| -------  | ------------------------------------------------------------------------ |
148| 201      | Permission denied.                                                       |
149| 202      | Non-system applications use system APIs.                                 |
150| 401      | Parameter error.                                                         |
151| 2100001  | Invalid parameter value.                                                 |
152| 2100002  | Operation failed. Cannot connect to service.                             |
153| 2100003  | System internal error.                                                   |
154| 29400000 | The specified user does not exist.                                       |
155| 29400001 | The number of firewall rules exceeds the maximum.                        |
156| 29400002 | The number of IP address rules in the firewall rule exceeds the maximum. |
157| 29400003 | The number of port rules in the firewall rule exceeds the maximum.       |
158| 29400004 | The number of domain rules in the firewall rule exceeds the maximum.     |
159| 29400005 | The number of domain rules exceeds the maximum.                          |
160| 29400007 | The dns rule is duplication.                                             |
161
162**示例:**
163
164```ts
165import { netFirewall } '@kit.NetworkKit';
166import { BusinessError } from '@kit.BasicServicesKit';
167
168let ipRule: netFirewall.NetFirewallRule = {
169  name: "rule1",
170  description: "rule1 description",
171  direction: netFirewall.NetFirewallRuleDirection.RULE_IN,
172  action:netFirewall.NetFirewallRuleDirection.RULE_DENY,
173  type: netFirewall.NetFirewallRuleType.RULE_IP,
174  isEnabled: true,
175  appUid: 20001,
176  localIps: [
177    {
178      family: 1,
179      type: 1,
180      address: "10.10.1.1",
181      mask: 24
182    },{
183      family: 1,
184      type: 2,
185      startIp: "10.20.1.1",
186      endIp: "10.20.1.10"
187    }],
188  remoteIps:[
189    {
190      family: 1,
191      type: 1,
192      address: "20.10.1.1",
193      mask: 24
194    },{
195      family: 1,
196      type: 2,
197      startIp: "20.20.1.1",
198      endIp: "20.20.1.10"
199    }],
200  protocol: 6,
201  localPorts: [
202    {
203      startPort: 1000,
204      endPort: 1000
205    },{
206      startPort: 2000,
207      endPort: 2001
208    }],
209  remotePorts: [
210    {
211      startPort: 443,
212      endPort: 443
213    }],
214  userId: 100
215};
216netFirewall.addNetFirewallRule(ipRule).then((result: number) => {
217  console.info('rule Id: ', result);
218}, (reason: BusinessError) => {
219  console.error('add firewall rule failed: ', JSON.stringify(reason));
220});
221
222let domainRule: netFirewall.NetFirewallRule = {
223  name: "rule2",
224  description: "rule2 description",
225  direction: netFirewall.NetFirewallRuleDirection.RULE_IN,
226  action:netFirewall.NetFirewallRuleDirection.RULE_DENY,
227  type: netFirewall.NetFirewallRuleType.RULE_DOMAIN,
228  isEnabled: true,
229  appUid: 20002,
230  domains: [
231    {
232      isWildcard: false,
233      domain: "www.example.cn"
234    },{
235      isWildcard: true,
236      domain: "*.example.cn"
237    }],
238  userId: 100
239};
240netFirewall.addNetFirewallRule(domainRule).then((result: number) => {
241  console.info('rule Id: ', result);
242}, (reason: BusinessError) => {
243  console.error('add firewall rule failed: ', JSON.stringify(reason));
244});
245
246let dnsRule: netFirewall.NetFirewallRule = {
247  name: "rule3",
248  description: "rule3 description",
249  direction: netFirewall.NetFirewallRuleDirection.RULE_IN,
250  action:netFirewall.NetFirewallRuleDirection.RULE_DENY,
251  type: netFirewall.NetFirewallRuleType.RULE_DNS,
252  isEnabled: true,
253  appUid: 20003,
254  primaryDns: "4.4.4.4",
255  standbyDns: "8.8.8.8",
256  userId: 100
257};
258netFirewall.addNetFirewallRule(dnsRule).then((result: number) => {
259  console.info('rule Id: ', result);
260}, (reason: BusinessError) => {
261  console.error('add firewall rule failed: ', JSON.stringify(reason));
262});
263```
264
265## netFirewall.updateNetFirewallRule
266
267updateNetFirewallRule(rule: NetFirewallRule): Promise\<void>
268
269更新防火墙规则。
270
271**系统接口**:此接口为系统接口。
272
273**需要权限**:ohos.permission.MANAGE_NET_FIREWALL
274
275**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
276
277**参数:**
278
279| 参数名  | 类型                                   | 必填 | 说明                             |
280| ------- | -------------------------------------- | ---- | -------------------------------- |
281| rule    | [NetFirewallRule](#netfirewallrule)    | 是   | 防火墙规则。                     |
282
283**返回值:**
284
285| 类型                 | 说明                                                                |
286| -------------------  | ------------------------------------------------------------------- |
287| Promise\<void>       | 无返回结果的Promise对象。                                           |
288
289**错误码:**
290
291| 错误码ID | 错误信息                                                                        |
292| -------  | ------------------------------------------------------------------------------- |
293| 201      | Permission denied.                                                              |
294| 202      | Non-system applications use system APIs.                                        |
295| 401      | Parameter error.                                                                |
296| 2100001  | Invalid parameter value.                                                        |
297| 2100002  | Operation failed. Cannot connect to service.                                    |
298| 2100003  | System internal error.                                                          |
299| 29400000 | The specified user does not exist.                                              |
300| 29400002 | The number of IP address rules in the firewall rule exceeds the maximum.        |
301| 29400003 | The number of port rules in the firewall rule exceeds the maximum.              |
302| 29400004 | The number of domain rules in the firewall rule exceeds the maximum.            |
303| 29400005 | The number of domain rules exceeds the maximum.                                 |
304| 29400006 | The specified rule does not exist.                                              |
305| 29400007 | The dns rule is duplication.                                                    |
306
307**示例:**
308
309```ts
310import { netFirewall } '@kit.NetworkKit';
311import { BusinessError } from '@kit.BasicServicesKit';
312
313let ipRuleUpd: netFirewall.NetFirewallRule = {
314  id: 1,
315  name: "rule1",
316  description: "rule1 description update",
317  direction: netFirewall.NetFirewallRuleDirection.RULE_IN,
318  action:netFirewall.NetFirewallRuleDirection.RULE_DENY,
319  type: netFirewall.NetFirewallRuleType.RULE_IP,
320  isEnabled: false,
321  appUid: 20001,
322  localIps: [
323    {
324      family: 1,
325      type: 1,
326      address: "10.10.1.1",
327      mask: 24
328    },{
329      family: 1,
330      type: 2,
331      startIp: "10.20.1.1",
332      endIp: "10.20.1.10"
333    }],
334  userId: 100
335};
336netFirewall.updateNetFirewallRule(ipRuleUpd).then(() => {
337  console.info('update firewall rule success.');
338}, (reason: BusinessError) => {
339  console.error('update firewall rule failed: ', JSON.stringify(reason));
340});
341```
342
343## netFirewall.removeNetFirewallRule
344
345removeNetFirewallRule(userId: number, ruleId: number): Promise\<void>
346
347删除防火墙规则。
348
349**系统接口**:此接口为系统接口。
350
351**需要权限**:ohos.permission.MANAGE_NET_FIREWALL
352
353**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
354
355**参数:**
356
357| 参数名   | 类型                             | 必填 | 说明                                         |
358| -------- | -------------------------------- | ---- | -------------------------------------------- |
359| rule     | NetFirewallRule                  | 是   | 防火墙规则。                                 |
360| userId   | number                           | 是   | 系统中的多用户用户ID,不能是不存在的用户ID。 |
361| ruleId   | number                           | 是   | 防火墙规则ID。                               |
362
363**返回值:**
364
365| 类型                | 说明                                                                 |
366| ------------------- | ---------------------------------------------------------------------|
367| Promise\<void>      | 无返回结果的Promise对象。                                            |
368
369**错误码:**
370
371| 错误码ID | 错误信息                                                                        |
372| -------  | ------------------------------------------------------------------------------- |
373| 201      | Permission denied.                                                              |
374| 202      | Non-system applications use system APIs.                                        |
375| 401      | Parameter error.                                                                |
376| 2100001  | Invalid parameter value.                                                        |
377| 2100002  | Operation failed. Cannot connect to service.                                    |
378| 2100003  | System internal error.                                                          |
379| 29400000 | The specified user does not exist.                                              |
380| 29400006 | The specified rule does not exist.                                              |
381
382**示例:**
383
384```ts
385import { netFirewall } '@kit.NetworkKit';
386import { BusinessError } from '@kit.BasicServicesKit';
387
388netFirewall.removeNetFirewallRule(100, 1).then(() => {
389  console.info("delete firewall rule success.");
390}).catch((error : BusinessError) => {
391  console.error("delete firewall rule failed: " + JSON.stringify(error));
392});
393```
394
395## netFirewall.getNetFirewallRules
396
397getNetFirewallRules(userId: number, requestParam: RequestParam): Promise\<FirewallRulePage>
398
399按userId获取防火墙规则,需要指定分页查询参数。
400
401**系统接口**:此接口为系统接口。
402
403**需要权限**:ohos.permission.GET_NET_FIREWALL
404
405**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
406
407**参数:**
408
409| 参数名          | 类型                          | 必填 | 说明                                         |
410| --------------- | ----------------------------- | ---- | -------------------------------------------- |
411| userId          | number                        | 是   | 系统中的多用户用户ID,不能是不存在的用户ID。 |
412| requestParam    | [RequestParam](#requestparam) | 是   | 分页查询参数。                               |
413
414**返回值:**
415
416| 类型                                            | 说明                                     |
417| ----------------------------------------------- | ---------------------------------------- |
418| Promise\<[FirewallRulePage](#firewallrulepage)> | 以Promise形式返回防火墙分页规则列表。    |
419
420**错误码:**
421
422| 错误码ID | 错误信息                                                                        |
423| -------  | --------------------------------------------------------------------------------|
424| 201      | Permission denied.                                                              |
425| 202      | Non-system applications use system APIs.                                        |
426| 401      | Parameter error.                                                                |
427| 2100001  | Invalid parameter value.                                                        |
428| 2100002  | Operation failed. Cannot connect to service.                                    |
429| 2100003  | System internal error.                                                          |
430| 29400000 | The specified user does not exist.                                              |
431
432**示例:**
433
434```ts
435import { netFirewall } '@kit.NetworkKit';
436import { BusinessError } from '@kit.BasicServicesKit';
437
438let ruleParam: netFirewall.RequestParam = {
439  page: 1,
440  pageSize: 10,
441  orderField: netFirewall.NetFirewallOrderField.ORDER_BY_RULE_NAME,
442  orderType: netFirewall.NetFirewallOrderType.ORDER_ASC
443};
444netFirewall.getNetFirewallRules(100, ruleParam).then((result: netfirewall.FirewallRulePage) => {
445  console.info("result:", JSON.stringify(result));
446}, (error: BusinessError) => {
447  console.error("get firewall rules failed: " + JSON.stringify(error));
448});
449```
450
451## netFirewall.getNetFirewallRule
452
453getNetFirewallRule(userId: number, ruleId: number): Promise\<NetFirewallRule>
454
455通过userId和ruleId获取指定的防火墙规则。
456
457**系统接口**:此接口为系统接口。
458
459**需要权限**:ohos.permission.GET_NET_FIREWALL
460
461**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
462
463**参数:**
464
465| 参数名   | 类型                      | 必填 | 说明                                         |
466| -------- | ------------------------- | ---- | -------------------------------------------- |
467| userId   | number                    | 是   | 系统中的多用户用户ID,不能是不存在的用户ID。 |
468| ruleId   | number                    | 是   | 防火墙规则ID。                               |
469
470**返回值:**
471
472| 类型                                            | 说明                                     |
473| ----------------------------------------------- | ---------------------------------------- |
474| Promise\<[NetFirewallRule](#netfirewallrule)>   | 以Promise形式返回防火墙规则。            |
475
476**错误码:**
477
478| 错误码ID | 错误信息                                                                        |
479| -------  | ------------------------------------------------------------------------------- |
480| 201      | Permission denied.                                                              |
481| 202      | Non-system applications use system APIs.                                        |
482| 401      | Parameter error.                                                                |
483| 2100001  | Invalid parameter value.                                                        |
484| 2100002  | Operation failed. Cannot connect to service.                                    |
485| 2100003  | System internal error.                                                          |
486| 29400000 | The specified user does not exist.                                              |
487| 29400006 | The specified rule does not exist.                                              |
488
489**示例:**
490
491```ts
492import { netFirewall } '@kit.NetworkKit';
493import { BusinessError } from '@kit.BasicServicesKit';
494
495netFirewall.getNetFirewallRule(100, 1).then((rule: netFirewall.NetFirewallRule) => {
496  console.info("result:", JSON.stringify(rule));
497}).catch((error : BusinessError) => {
498  console.error(" get firewall rules failed: " + JSON.stringify(error));
499});
500```
501
502## netFirewall.getInterceptedRecords
503
504getInterceptedRecords(userId: number, requestParam: RequestParam): Promise<\InterceptedRecordPage>
505
506按userId获取截获的记录,需要指定分页查询参数。
507
508**系统接口**:此接口为系统接口。
509
510**需要权限**:ohos.permission.GET_NET_FIREWALL
511
512**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
513
514**参数:**
515
516| 参数名       | 类型                          | 必填 | 说明                                         |
517| ------------ | --------------------------- | ---- | -------------------------------------------- |
518| userId       | number                        | 是   | 系统中的多用户用户ID,不能是不存在的用户ID。 |
519| requestParam | [RequestParam](#requestparam) | 是   | 查询参数。                                   |
520
521**返回值:**
522
523| 类型                                                      | 说明                            |
524| --------------------------------------------------------- | ------------------------------- |
525| Promise\<[InterceptedRecordPage](#interceptedrecordpage)> | 以Promise形式返回拦截记录列表。 |
526
527**错误码:**
528
529| 错误码ID | 错误信息                                                                        |
530| -------  | --------------------------------------------------------------------------------|
531| 201      | Permission denied.                                                              |
532| 202      | Non-system applications use system APIs.                                        |
533| 401      | Parameter error.                                                                |
534| 2100001  | Invalid parameter value.                                                        |
535| 2100002  | Operation failed. Cannot connect to service.                                    |
536| 2100003  | System internal error.                                                          |
537| 29400000 | The specified user does not exist.                                              |
538
539**示例:**
540
541```ts
542import { netFirewall } '@kit.NetworkKit';
543import { BusinessError } from '@kit.BasicServicesKit';
544
545let interceptRecordParam: netFirewall.RequestParam = {
546  page: 1,
547  pageSize: 10,
548  orderField: netFirewall.NetFirewallOrderField.ORDER_BY_RECORD_TIME,
549  orderType: netFirewall.NetFirewallOrderType.ORDER_DESC
550};
551netFirewall.getInterceptedRecords(100, interceptRecordParam).then((result: netFirewall.InterceptedRecordPage) => {
552  console.info("result:", JSON.stringify(result));
553}, (error: BusinessError) => {
554  console.error("get intercept records failed: " + JSON.stringify(error));
555});
556```
557
558## NetFirewallRuleDirection
559
560枚举,防火墙规则的拦截方向。
561
562**系统接口**:此接口为系统接口。
563
564**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
565
566| 名称         | 值   | 说明   |
567|--------------|------|--------|
568| RULE_IN      | 1    | 入站。 |
569| RULE_OUT     | 2    | 出站。 |
570
571## FirewallRuleAction
572
573枚举,防火墙规则行为,允许网络连接或阻断连接。
574
575**系统接口**:此接口为系统接口。
576
577**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
578
579| 名称           | 值   | 说明   |
580|----------------|------|------- |
581| RULE_ALLOW     | 0    | 允许。 |
582| RULE_DENY      | 1    | 阻断。 |
583
584## NetFirewallRuleType
585
586枚举,防火墙规则类型。
587
588**系统接口**:此接口为系统接口。
589
590**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
591
592| 名称           | 值   | 说明         |
593|----------------| ---- | ------------ |
594| RULE_IP        | 1    | IP类规则。   |
595| RULE_DOMAIN    | 2    | 域名类规则。 |
596| RULE_DNS       | 3    | DNS规则。    |
597
598## NetFirewallOrderField
599
600枚举,防火墙规则排序类型。
601
602**系统接口**:此接口为系统接口。
603
604**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
605
606| 名称                  | 值   | 说明                   |
607| --------------------- | ---- | ---------- ----------- |
608| ORDER_BY_RULE_NAME    | 1    | 根据防火墙规则名排序。 |
609| ORDER_BY_RECORD_TIME  | 100  | 根据记录时间排序。     |
610
611## NetFirewallOrderType
612
613枚举,防火墙规则排序类型,按名称或时间顺序排序。
614
615**系统接口**:此接口为系统接口。
616
617**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
618
619| 名称       | 值   | 说明                           |
620| ---------- | ---- | ------------------------------ |
621| ORDER_ASC  | 1    | 按防火墙规则排序类型升序排序。 |
622| ORDER_DESC | 100  | 按防火墙规则排序类型降序排序。 |
623
624## NetFirewallPolicy
625
626防火墙状态。
627
628**系统接口**:此接口为系统接口。
629
630**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
631
632| 名称       | 类型                                       | 必填 | 说明          |
633| -----------| -------------------------------------------|------|-------------- |
634| isOpen     | boolean                                    | 是   | 防火墙开/关。 |
635| inAction   | [FirewallRuleAction](#firewallruleaction)  | 是   | 入站行动。    |
636| outAction  | [FirewallRuleAction](#firewallruleaction)  | 是   | 出站行动。    |
637
638## NetFirewallIpParams
639
640防火墙规则ip参数。
641
642**系统接口**:此接口为系统接口。
643
644**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
645
646| 名称        | 类型   |必填| 说明                                                        |
647| ----------- | -------|----|------------------------------------------------------------ |
648| type        | number | 是 | 1:IP地址或子网,当使用单个IP时,掩码为32; 2:IP段。          |
649| family      | number | 否 | IPv4=1, IPv6=2, 默认IPv4,其他当前不支持。                  |
650| address     | string | 否 | IP地址:当类型等于1时有效,否则将被忽略。                   |
651| mask        | number | 否 | IPv4:子网掩码,IPv6:前缀,当类型等于1时有效,否则将被忽略。 |
652| startIp     | string | 否 | 起始IP:当类型等于2时有效,否则将被忽略。                   |
653| endIp       | string | 否 | 结束IP: 当类型等于2时有效,否则将被忽略。                   |
654
655## NetFirewallPortParams
656
657防火墙规则端口参数。
658
659**系统接口**:此接口为系统接口。
660
661**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
662
663| 名称         | 类型   | 必填 | 说明       |
664| ------------ | -------|------|----------- |
665| startPort    | number | 是   | 开始端口。 |
666| endPort      | number | 是   | 结束端口。 |
667
668## NetFirewallDomainParams
669
670防火墙规则域信息。
671
672**系统接口**:此接口为系统接口。
673
674**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
675
676| 名称         | 类型    | 必填 | 说明                                      |
677| ------------ | --------|------|------------------------------------------ |
678| isWildcard   | boolean | 是   | 是否包含通配符。                          |
679| domain       | string  | 是   | 当isWildcard为false时,需要确定的完整域。 |
680
681## NetFirewallDnsParams
682
683防火墙规则DNS信息。
684
685**系统接口**:此接口为系统接口。
686
687**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
688
689| 名称         | 类型    | 必填 | 说明           |
690| ------------ | --------|------|--------------- |
691| primaryDns   | string  | 是   | 主域名服务器。 |
692| standbyDns   | string  | 否   | 备份DNS。      |
693
694
695## NetFirewallRule
696
697防火墙规则信息结构。
698
699**系统接口**:此接口为系统接口。
700
701**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
702
703| 名称        | 类型                                                        |必填| 说明                                                           |
704| ------------|-------------------------------------------------------------|----|--------------------------------------------------------------  |
705| userId      | number                                                      | 是 | 系统中的多用户用户ID,不能是不存在的用户ID。                   |
706| name        | string                                                      | 是 | 规则名称,必填,最多128个字符。                                |
707| direction   | [NetFirewallRuleDirection](#netfirewallruledirection)       | 是 | 规则方向,入站或出站。                                         |
708| action      | [FirewallRuleAction](#firewallruleaction)                   | 是 | 行为。                                                         |
709| type        | [NetFirewallRuleType](#netfirewallruletype)                 | 是 | 规则类型。                                                     |
710| isEnabled   | boolean                                                     | 是 | 是否启用。                                                     |
711| id          | number                                                      | 否 | 规则ID。                                                       |
712| description | string                                                      | 否 | 规则描述,可选,最多256个字符。                                |
713| appUid      | number                                                      | 否 | 应用程序或服务UID。                                            |
714| localIps    | Array\<[NetFirewallIpParams](#netfirewallipparams)>         | 否 | 本地IP地址:ruleType=RULE_IP有效,否则忽略,最多10个。         |
715| remoteIps   | Array\<[NetFirewallIpParams](#netfirewallipparams)>         | 否 | 远端IP地址:当ruleType=RULE_IP时有效,否则将被忽略,最多10个。 |
716| protocol    | number                                                      | 否 | 协议,TCP:6,UDP:17,当ruleType=RULE_IP时有效,否则将被忽略。  |
717| localPorts  | Array\<[NetFirewallPortParams](#netfirewallportparams)>     | 否 | 本地端口:当ruleType=RULE_IP时有效,否则将被忽略,最多10个。   |
718| remotePorts | Array\<[NetFirewallPortParams](#netfirewallportparams)>     | 否 | 远端端口:当ruleType=RULE_IP时有效,否则将被忽略,最多10个。   |
719| domains     | Array\<[NetFirewallDomainParams](#netfirewalldomainparams)> | 否 | 域名列表:当ruleType=RULE_DOMAIN时有效,否则将被忽略。         |
720| dns         | [NetFirewallDnsParams](#netfirewalldnsparams)               | 否 | DNS:当ruleType=RULE_DNS时有效,否则将被忽略。                  |
721
722## InterceptedRecord
723
724拦截记录信息结构。
725
726**系统接口**:此接口为系统接口。
727
728**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
729
730| 名称       | 类型   | 必填 | 说明                |
731|------------| -------|------|-------------------- |
732| time       | number | 是   | 时间戳。            |
733| localIp    | string | 否   | 本地IP。            |
734| remoteIp   | string | 否   | 远端IP。            |
735| localPort  | number | 否   | 本地端口。          |
736| remotePort | number | 否   | 远端端口。          |
737| protocol   | number | 否   | 传输层协议。        |
738| appUid     | number | 否   | 应用程序或服务UID。 |
739| domain     | string | 否   | 域名。              |
740
741
742## RequestParam
743
744查询输入信息结构。
745
746**系统接口**:此接口为系统接口。
747
748**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
749
750| 名称       | 类型                                             | 必填 | 说明                        |
751|------------|--------------------------------------------------|------|---------------------------- |
752| page       | number                                           | 是   | 页码,值范围:[1,1000]。    |
753| pageSize   | number                                           | 是   | 页面大小,值范围:[1,50]。  |
754| orderField | [NetFirewallOrderField](#netfirewallorderfield)  | 是   | 排序字段。                  |
755| orderType  | [NetFirewallOrderType](#netfirewallordertype)    | 是   | 排序顺序。                  |
756## FirewallRulePage
757
758防火墙规则页信息结构。
759
760**系统接口**:此接口为系统接口。
761
762**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
763
764| 名称       | 类型                                        | 必填 | 说明          |
765|------------|-------------------------------------------- |------|---------------|
766| page       | number                                      | 是   | 当前页码。    |
767| pageSize   | number                                      | 是   | 页大小。      |
768| totalPage  | number                                      | 是   | 总页数。      |
769| data       | Array\<[NetFirewallRule](#netfirewallrule)> | 是   | 页面数据。    |
770
771## InterceptedRecordPage
772
773拦截记录分页信息结构。
774
775**系统接口**:此接口为系统接口。
776
777**系统能力**:SystemCapability.Communication.NetManager.NetFirewall
778
779| 名称       | 类型                                            | 必填 | 说明       |
780|------------| ----------------------------------------------- |------|----------  |
781| page       | number                                          | 是   | 当前页码。 |
782| pageSize   | number                                          | 是   | 页面大小。 |
783| totalPage  | number                                          | 是   | 总页数。   |
784| data       | Array\<[InterceptedRecord](#interceptedrecord)> | 是   | 页面数据。 |
785