ಹೊಂದುವ ರೂಟ್ ಇಲ್ಲದೆ AWS Client VPN ಟ್ರಾಫಿಕ್ ಅನ್ನು ಏಕೆ ಬಿಡುತ್ತದೆ
ಎಂಡ್ಪಾಯಿಂಟ್ ತನ್ನ ರೂಟ್ ಟೇಬಲ್ ಗಮ್ಯವನ್ನು ಆವರಿಸಿದಾಗ ಮಾತ್ರ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಮುಂದೆ ಕಳುಹಿಸುತ್ತದೆ. ರೂಟ್ಗಳನ್ನು ಓದಿ, for_each ನಿಂದ ಪ್ರಿಫಿಕ್ಸ್ ಘೋಷಿಸಿ, ಹಿಂತಿರುಗುವ ಮಾರ್ಗ ಪರಿಶೀಲಿಸಿ.
Client VPN ಕ್ಲೈಂಟ್ಗೆ ವಿಳಾಸ ನೀಡುತ್ತದೆ, ಹ್ಯಾಂಡ್ಶೇಕ್ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ, ಆದರೆ ಸಂಪರ್ಕ ಎಲ್ಲಿಗೂ ತಲುಪುವುದಿಲ್ಲ. ಪ್ರಮಾಣಪತ್ರಗಳು ಅಥವಾ ಕ್ಲೈಂಟ್ ಆವೃತ್ತಿಗಳನ್ನು ಮುಟ್ಟುವ ಮೊದಲು ಎಂಡ್ಪಾಯಿಂಟ್ನ ಸ್ವಂತ ರೂಟ್ ಟೇಬಲ್ ನೋಡಿ. AWS Client VPN ಎಂಡ್ಪಾಯಿಂಟ್ ತನ್ನ ರೂಟ್ಗಳಲ್ಲಿ ಒಂದು ಗಮ್ಯ ಪ್ರಿಫಿಕ್ಸ್ ಅನ್ನು ಆವರಿಸಿದಾಗ ಮಾತ್ರ ಪ್ಯಾಕೆಟ್ ಮುಂದೆ ಕಳುಹಿಸುತ್ತದೆ; ಏನೂ ಹೊಂದದಿದ್ದರೆ ಪ್ಯಾಕೆಟ್ ಎಂಡ್ಪಾಯಿಂಟ್ನಲ್ಲೇ ಬಿಸಾಡಲ್ಪಡುತ್ತದೆ ಮತ್ತು ಗುರಿ ಹೋಸ್ಟ್ ಎಂದೂ SYN ನೋಡುವುದಿಲ್ಲ.
ಇದು ಫಾರ್ವರ್ಡಿಂಗ್ ನಿರ್ಧಾರ, ದೃಢೀಕರಣದ ನಿರ್ಧಾರವಲ್ಲ. ಟನೆಲ್ ಮೇಲೆದ್ದ ನಂತರ ಮತ್ತು ಅಧಿಕಾರ ನಿಯಮಗಳು ಮೌಲ್ಯಮಾಪನವಾದ ನಂತರ ಇದು ಸಂಭವಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಮಾನ್ಯ ಪ್ರಮಾಣಪತ್ರ ಮತ್ತು ಮಾನ್ಯ ಗುಂಪು ಸಹ ಸತ್ತ ಸಂಪರ್ಕವನ್ನು ನೀಡಬಹುದು.
ಎಂಡ್ಪಾಯಿಂಟ್ ತನ್ನ ರೂಟ್ ಟೇಬಲ್ ಆವರಿಸುವುದನ್ನು ಮಾತ್ರ ಮುಂದೆ ಕಳುಹಿಸುತ್ತದೆ
ಪ್ರತಿ ರೂಟ್ ಎಂದರೆ ಗಮ್ಯ CIDR ಜೊತೆಗೆ ಟ್ರಾಫಿಕ್ ಸ್ವೀಕರಿಸಬೇಕಾದ ಸಬ್ನೆಟ್. ಎಂಡ್ಪಾಯಿಂಟ್ ಕ್ಲೈಂಟ್ನ ಗಮ್ಯವನ್ನು ಆ ಪಟ್ಟಿಯೊಂದಿಗೆ ಹೋಲಿಸಿ, ಹೊಂದುವ ನಮೂದನ್ನು ಆರಿಸಿ, ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಸಂಬಂಧಿತ ಸಬ್ನೆಟ್ಗೆ ಕಳುಹಿಸುತ್ತದೆ. ನಮೂದು ಇಲ್ಲದಿದ್ದರೆ ಮುಂದಿನ ಹಾಪ್ ಇಲ್ಲ.
ರೂಟ್ ಏನಲ್ಲ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಅದು VPC ರೂಟ್ ಟೇಬಲ್ನ ನಮೂದಲ್ಲ, ಮತ್ತು ಏನನ್ನೂ ಅಧಿಕಾರ ನೀಡುವುದಿಲ್ಲ. ಅಧಿಕಾರ ನಿಯಮಗಳು ಗುಂಪು ಗಮ್ಯವನ್ನು ತಲುಪಬಹುದೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತವೆ; ರೂಟ್ಗಳು ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಪ್ಯಾಕೆಟ್ ಕಳುಹಿಸಲು ಸ್ಥಳವಿದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತವೆ. ಎರಡೂ ಹೊಂದಬೇಕು, ಮತ್ತು ಅವು ಬೇರೆ ಬೇರೆ ಲಕ್ಷಣಗಳಿಂದ ವಿಫಲವಾಗುತ್ತವೆ, ಆದ್ದರಿಂದ ಯಾವುದು ಮುರಿದಿದೆ ಎಂದು ಊಹಿಸುವುದು ಅಪರಾಹ್ನವನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ.
ಸಾಂಪ್ರದಾಯಿಕ ಹೊಂದಾಣಿಕೆ ಇಲ್ಲದಿರುವಿಕೆ ಎಂದರೆ ಪೀರ್ ಆದ VPC. ಹೋಸ್ಟ್ 10.20.4.0/24 ನಲ್ಲಿರುವಾಗ ಯಾರೋ 10.20.0.0/24 ಗೆ ರೂಟ್ ಸೇರಿಸುತ್ತಾರೆ, ಹೀಗಾಗಿ ವಿಳಾಸ ಎಲ್ಲಾ ನಮೂದುಗಳ ಹೊರಗೆ ಬೀಳುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಬದಿಯ ಕ್ಯಾಪ್ಚರ್ ಉತ್ತರವಿಲ್ಲದೆ ಪುನರಾವರ್ತಿತ SYN ತೋರಿಸುತ್ತದೆ, ಮತ್ತು ಗುರಿಯ ಲಾಗ್ಗಳು ಏನನ್ನೂ ತೋರಿಸುವುದಿಲ್ಲ.
ಪ್ರಮಾಣಪತ್ರಕ್ಕಿಂತ ಮೊದಲು ರೂಟ್ ಪಟ್ಟಿ ಓದಿ
ಎಂಡ್ಪಾಯಿಂಟ್ನ ರೂಟ್ಗಳು ಪ್ರತ್ಯೇಕ ವಸ್ತು, ಆದ್ದರಿಂದ VPC ಟೇಬಲ್ ಓದುವ ಬದಲು ಅವುಗಳನ್ನು ನೇರವಾಗಿ ಕೇಳಿ:
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0 --query 'Routes[].{Dest:DestinationCidr,Target:TargetSubnet,Origin:Origin}'ವಿಫಲವಾಗುತ್ತಿರುವ ಕ್ಲೈಂಟ್ನಿಂದ ನಿಖರ ವಿಳಾಸ ಮತ್ತು ಪ್ರಿಫಿಕ್ಸ್ ಉದ್ದ ತೆಗೆದುಕೊಂಡು, ನಂತರ ಆವರಣವನ್ನು ಅಕ್ಷರದಿಂದ ಅಕ್ಷರ ಪರಿಶೀಲಿಸಿ. ಅತಿ ಉದ್ದದ ಪ್ರಿಫಿಕ್ಸ್ ಹೊಂದಾಣಿಕೆ ಅನ್ವಯಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕಿರಿದಾದ ರೂಟ್ ಬೇರೆಡೆಗೆ ತೋರಿಸಿದಾಗ ಅಗಲವಾದ ರೂಟ್ ನಿಮ್ಮನ್ನು ಉಳಿಸುವುದಿಲ್ಲ.
for_each ನಿಂದ ಪ್ರತಿ ಗಮ್ಯಕ್ಕೆ ಒಂದು ಸಂಪನ್ಮೂಲ
ಕೈಯಿಂದ ಬರೆದ ರೂಟ್ ಬ್ಲಾಕ್ಗಳು ಯಾರಾದರೂ ಕನ್ಸೋಲ್ನಲ್ಲಿ ಪ್ರಿಫಿಕ್ಸ್ ಸೇರಿಸಿದ ಕ್ಷಣವೇ ಜಾರುತ್ತವೆ. ಗಮ್ಯಗಳನ್ನು ನಕ್ಷೆಯಲ್ಲಿ ಇರಿಸಿ ಮತ್ತು ಪ್ರತಿ ಕೀಗೆ ಒಂದು ಸಂಪನ್ಮೂಲ ರಚಿಸಿ, ಇದರಿಂದ ಪ್ರತಿ ಸೇರಿಸುವಿಕೆ ಅಥವಾ ತೆಗೆಯುವಿಕೆ ಪ್ರತ್ಯೇಕವಾಗಿ ಉಳಿಯುತ್ತದೆ.
variable "client_vpn_routes" {
type = map(string)
default = {
"10.20.0.0/16" = "subnet-0aa11bb22cc33dd44"
"172.31.0.0/20" = "subnet-0aa11bb22cc33dd44"
}
}
resource "aws_ec2_client_vpn_route" "this" {
for_each = var.client_vpn_routes
client_vpn_endpoint_id = var.client_vpn_endpoint_id
destination_cidr_block = each.key
target_vpc_subnet_id = each.value
depends_on = [aws_ec2_client_vpn_network_association.this]
}ನೆಟ್ವರ್ಕ್ ಸಂಯೋಜನೆಯ ಮೇಲಿನ ಅವಲಂಬನೆ ಉಳಿಸಿ. ರೂಟ್ಗೆ ಸಂಯೋಜಿತ ಸಬ್ನೆಟ್ ಬೇಕು, ಆದ್ದರಿಂದ ಎರಡನ್ನೂ ರಚಿಸುವ apply ಮೊದಲು ಸಂಯೋಜನೆಯನ್ನು ಕ್ರಮಗೊಳಿಸಬೇಕು, ಮತ್ತು ಆ ಉಲ್ಲೇಖವಿಲ್ಲದೆ Terraform ರೂಟ್ ಅನ್ನು ಮೊದಲು ಪ್ರಯತ್ನಿಸಲು ಸ್ವತಂತ್ರವಾಗಿದೆ. ನಂತರ ಯೋಜನೆ ಓದಿ: ರೂಟ್ ಸೇರಿಸುವಿಕೆಗಳ ಸಂಖ್ಯೆ ನೀವು ಸೇರಿಸಿದ ಪ್ರಿಫಿಕ್ಸ್ಗಳಿಗೆ ಹೊಂದಬೇಕು. ಯೋಜನೆ ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನೂ ಬದಲಾಯಿಸಿದರೆ, ಎಂಡ್ಪಾಯಿಂಟ್ ಸಂಪನ್ಮೂಲ ತಪ್ಪಾಗಿ ಬರೆಯಲಾಗಿದೆ, ಮತ್ತು ಅದನ್ನು ಅನ್ವಯಿಸುವುದು ಸಂಪರ್ಕಿತ ಪ್ರತಿ ಕ್ಲೈಂಟ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸುತ್ತದೆ.
ನೀವು ರಚಿಸದ ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ದತ್ತು ತೆಗೆದುಕೊಳ್ಳುವುದು
ಬಹುಪಾಲು ತಂಡಗಳು ಕನ್ಸೋಲ್ನಲ್ಲಿ ನಿರ್ಮಿಸಿದ ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ವಾರಸು ಪಡೆಯುತ್ತವೆ, ಆದ್ದರಿಂದ ರೂಟ್ ಕೋಡ್ ಇರುವುದಿಲ್ಲ. ಕೇವಲ ರೂಟ್ಗಳನ್ನು Terraform ಗೆ ತರಲು ಎರಡನೇ ಎಂಡ್ಪಾಯಿಂಟ್ ಎಬ್ಬಿಸಬೇಡಿ.
ಬದಲಿಗೆ ಆಮದು ಮಾಡಿ, ಅಥವಾ ids ಅನ್ನು ಚರಾಕ್ಷರಗಳಾಗಿ ರವಾನಿಸಿ ವಾರಸು ವಸ್ತುಗಳನ್ನು ನಿರ್ವಹಣೆಯಿಲ್ಲದೆ ಬಿಡಿ. ಆಮದಿಗೆ ಪ್ರತಿ ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರಕ್ಕೆ ಪೂರೈಕೆದಾರರು ದಾಖಲಿಸುವ ಗುರುತಿಸುವಿಕೆ ಸ್ವರೂಪ ಬೇಕು; ಅದು ಎಂಡ್ಪಾಯಿಂಟ್, ಗಮ್ಯ ಪ್ರಿಫಿಕ್ಸ್ ಮತ್ತು ಗುರಿ ಸಬ್ನೆಟ್ ಅನ್ನು ಎನ್ಕೋಡ್ ಮಾಡುತ್ತದೆ. ಆ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ನೆನಪಿನಿಂದ ರಚಿಸುವ ಬದಲು ಸಂಪನ್ಮೂಲ ದಾಖಲೆಯಿಂದ ನಕಲಿಸಿ, ಯೋಜನೆ ಚಲಾಯಿಸಿ, ಮತ್ತು ಹೊಸದನ್ನು ಸೇರಿಸುವ ಮೊದಲು ಯಾವುದೇ ಬದಲಾವಣೆ ನಿರೀಕ್ಷಿಸಬೇಡಿ.
ಪ್ಯಾಕೆಟ್ ಚಲಿಸುವ ಕ್ರಮದಲ್ಲೇ ಅದನ್ನು ಜಾಡಿಸಿ
ರೂಟ್ ಇದ್ದು ಸಂಪರ್ಕ ಇನ್ನೂ ವಿಫಲವಾದರೆ, ಮೇಲಿನ ಪದರದಲ್ಲಿ ಊಹಿಸುವ ಬದಲು ಮಾರ್ಗವನ್ನು ಕ್ರಮವಾಗಿ ನಡೆಯಿರಿ.
- ರೂಟ್: ಪ್ರಿಫಿಕ್ಸ್ ಗಮ್ಯವನ್ನು ಆವರಿಸಿ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಸಂಬಂಧಿತ ಸಬ್ನೆಟ್ಗೆ ತೋರಿಸುತ್ತದೆ.
- ಅಧಿಕಾರ: ಅಧಿಕಾರ ನಿಯಮ ಬಳಕೆದಾರರ ಗುಂಪಿಗೆ ಆ ಗಮ್ಯವನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಕೇವಲ ರೂಟ್ ಎಂದೂ ಪ್ರವೇಶ ನೀಡುವುದಿಲ್ಲ.
- ಹಿಂತಿರುಗುವ ಮಾರ್ಗ: ಗುರಿ ಸಬ್ನೆಟ್ನ ರೂಟ್ ಟೇಬಲ್ ಉತ್ತರಗಳನ್ನು ಎಂಡ್ಪಾಯಿಂಟ್ನತ್ತ ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಮತ್ತು ಭದ್ರತಾ ಗುಂಪು ಕ್ಲೈಂಟ್ ವಿಳಾಸ ಪೂಲ್ನಿಂದ ಪೋರ್ಟ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
- ಅಪ್ಲಿಕೇಶನ್: ಕ್ಲೈಂಟ್ನಿಂದ ನಿಜವಾದ TCP ಸಂಪರ್ಕ ತೆರೆಯಿರಿ, ನಂತರ ಗುರಿಯ ಲಾಗ್ಗಳು ಪೂಲ್ನಿಂದ ನಿರೀಕ್ಷಿತ ಮೂಲ ವಿಳಾಸ ತೋರಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿ.
ಪ್ರತಿ apply ಗೆ ಒಂದು ಪ್ರಿಫಿಕ್ಸ್ ಬದಲಿಸಿ, ನಂತರ ರೂಟ್ ಪಟ್ಟಿ ಮತ್ತೆ ಓದಿ, ಮತ್ತು ಗಮ್ಯ, ಅಧಿಕಾರ ನೀಡುವ ನಿಯಮ ಮತ್ತು ಹಿಂತಿರುಗುವ ಮಾರ್ಗವನ್ನು ಜೊತೆಯಾಗಿ ದಾಖಲಿಸಿ. ತಿರಸ್ಕೃತ ಸಂಪರ್ಕವನ್ನು ಡೀಬಗ್ ಮಾಡುವ ಮುಂದಿನ ವ್ಯಕ್ತಿ ಪ್ರಮಾಣಪತ್ರ ಸಿದ್ಧಾಂತದಿಂದಲ್ಲ, ಈ ಪಟ್ಟಿಯಿಂದ ಪ್ರಾರಂಭಿಸಬೇಕು.