@@ -50,16 +50,31 @@ func GetFwRulesOnIngressGateway(node models.Node) (rules []models.FwRule) {
50
50
if defaultDevicePolicy .Enabled {
51
51
return
52
52
}
53
+ defer func () {
54
+ if len (rules ) == 0 && IsNodeAllowedToCommunicateWithAllRsrcs (node ) {
55
+ if node .NetworkRange .IP != nil {
56
+ rules = append (rules , models.FwRule {
57
+ SrcIP : node .NetworkRange ,
58
+ Allow : true ,
59
+ })
60
+ }
61
+ if node .NetworkRange6 .IP != nil {
62
+ rules = append (rules , models.FwRule {
63
+ SrcIP : node .NetworkRange6 ,
64
+ Allow : true ,
65
+ })
66
+ }
67
+ return
68
+ }
69
+ }()
70
+
53
71
for _ , nodeI := range nodes {
54
72
if ! nodeI .IsStatic || nodeI .IsUserNode {
55
73
continue
56
74
}
57
- if ! node .StaticNode .Enabled {
75
+ if ! nodeI .StaticNode .Enabled {
58
76
continue
59
77
}
60
- // if nodeI.StaticNode.IngressGatewayID != node.ID.String() {
61
- // continue
62
- // }
63
78
if IsNodeAllowedToCommunicateWithAllRsrcs (nodeI ) {
64
79
if nodeI .Address .IP != nil {
65
80
rules = append (rules , models.FwRule {
@@ -525,7 +540,18 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
525
540
continue
526
541
}
527
542
if _ , ok := eI .Nodes [targetnode .ID .String ()]; ok {
528
- if eI .Range != "" {
543
+ if servercfg .IsPro && eI .Domain != "" && len (eI .DomainAns ) > 0 {
544
+ for _ , domainAnsI := range eI .DomainAns {
545
+ ip , cidr , err := net .ParseCIDR (domainAnsI )
546
+ if err == nil {
547
+ if ip .To4 () != nil {
548
+ egressRanges4 = append (egressRanges4 , * cidr )
549
+ } else {
550
+ egressRanges6 = append (egressRanges6 , * cidr )
551
+ }
552
+ }
553
+ }
554
+ } else if eI .Range != "" {
529
555
_ , cidr , err := net .ParseCIDR (eI .Range )
530
556
if err == nil {
531
557
if cidr .IP .To4 () != nil {
@@ -535,6 +561,7 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
535
561
}
536
562
}
537
563
}
564
+ dstTags [targetnode .ID .String ()] = struct {}{}
538
565
}
539
566
}
540
567
break
@@ -544,7 +571,18 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
544
571
err := e .Get (db .WithContext (context .TODO ()))
545
572
if err == nil && e .Status && len (e .Nodes ) > 0 {
546
573
if _ , ok := e .Nodes [targetnode .ID .String ()]; ok {
547
- if e .Range != "" {
574
+ if servercfg .IsPro && e .Domain != "" && len (e .DomainAns ) > 0 {
575
+ for _ , domainAnsI := range e .DomainAns {
576
+ ip , cidr , err := net .ParseCIDR (domainAnsI )
577
+ if err == nil {
578
+ if ip .To4 () != nil {
579
+ egressRanges4 = append (egressRanges4 , * cidr )
580
+ } else {
581
+ egressRanges6 = append (egressRanges6 , * cidr )
582
+ }
583
+ }
584
+ }
585
+ } else if e .Range != "" {
548
586
_ , cidr , err := net .ParseCIDR (e .Range )
549
587
if err == nil {
550
588
if cidr .IP .To4 () != nil {
@@ -554,6 +592,7 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
554
592
}
555
593
}
556
594
}
595
+ dstTags [targetnode .ID .String ()] = struct {}{}
557
596
}
558
597
559
598
}
@@ -800,10 +839,10 @@ func GetEgressRulesForNode(targetnode models.Node) (rules map[string]models.AclR
800
839
if node .ID == targetnode .ID {
801
840
continue
802
841
}
803
- if node .Address .IP != nil {
842
+ if ! node . IsStatic && node .Address .IP != nil {
804
843
aclRule .IPList = append (aclRule .IPList , node .AddressIPNet4 ())
805
844
}
806
- if node .Address6 .IP != nil {
845
+ if ! node . IsStatic && node .Address6 .IP != nil {
807
846
aclRule .IP6List = append (aclRule .IP6List , node .AddressIPNet6 ())
808
847
}
809
848
if node .IsStatic && node .StaticNode .Address != "" {
0 commit comments