ЁЯФв рдзрдбрд╛ 02 тАФ CIDR рдЖрдгрд┐ IP addresses: campus рд╕рд╛рдареА рдШрд░рд╛рдВрдЪреЗ рдирдВрдмрд░
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 02 ┬╖ рдорд╛рдЧреЗ: lesson-01-why-vpc ┬╖ рдкреБрдвреЗ: lesson-03-subnets-azs
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбрд╛ 01, рдЖрдгрд┐ рдирдВрдмрд░: 10.20.0.0/16 рд╕рд╛рд░рдЦрд╛ CIDR block рддреБрдордЪреНрдпрд╛ рдорд╛рд▓рдХреАрдЪреЗ рдХрд┐рддреА рдкрддреНрддреЗ рдЖрд╣реЗрдд рддреЗ рдХрд╕реЗ
рд╕рд╛рдВрдЧрддреЛ, рдХреЛрдгрддреНрдпрд╛ ranges private рдЖрд╣реЗрдд, рдЖрдгрд┐ рдкрд░рдд рдлрд┐рд░рд╡рддрд╛ рди рдпреЗрдгрд╛рд░рд╛ рдЖрд░рд╛рдЦрдбреНрдпрд╛рдЪрд╛ рдПрдХ рдирд┐рдпрдо тАФ
рдХрдзреАрдЪ overlap рдирдХреЛ. vpc/demo.py рдордзреАрд▓ cidr() рдЖрдгрд┐
vpc/network.py рдордзреАрд▓ overlaps().
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
Campus рд╡рд░рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЦреЛрд▓реАрд▓рд╛ рдШрд░рд╛рдЪрд╛ рдирдВрдмрд░ рд▓рд╛рдЧрддреЛ, рдореНрд╣рдгрдЬреЗ рдкрддреНрд░реЗ рддрд┐рдереЗ рдкреЛрд╣реЛрдЪрддрд╛рдд. IPv4 address рдореНрд╣рдгрдЬреЗ
рдЪрд╛рд░ рдирдВрдмрд░, рдЬрд╕реЗ 10.20.96.15.
рд╢рд╛рд│рд╛ рдкреНрд░рддреНрдпреЗрдХ рдирдВрдмрд░ рдПрдХреЗрдХ рдХрд░реВрди рд▓рд┐рд╣рд┐рдд рдирд╛рд╣реА. рддреА рдПрдХ рдирд┐рдпрдо рд▓рд┐рд╣рд┐рддреЗ: "10.20. рдиреЗ рд╕реБрд░реВ рд╣реЛрдгрд╛рд░реЗ
рд╕рдЧрд│реЗ рдирдВрдмрд░". рддреЛ рдирд┐рдпрдо рдореНрд╣рдгрдЬреЗ CIDR block: 10.20.0.0/16.
/16 рдЪрд╛ рдЕрд░реНрде: рдкрд╣рд┐рд▓реЗ 16 bits рдард░рд▓реЗрд▓реЗ тАФ рдмрд╛рдХреАрдЪреЗ рддреБрдордЪреЗ. рдХрдореА bits рдард░рд╡рд▓реЗ рддрд░
рдЬрд╛рд╕реНрдд рдирдВрдмрд░ рдорд┐рд│рддрд╛рдд. рдЬрд╛рд╕реНрдд bits рдард░рд╡рд▓реЗ рддрд░ рдХрдореА:
/16тЖТ 65,536 рдШрд░рд╛рдВрдЪреЗ рдирдВрдмрд░ (рдкреВрд░реНрдг campus)/20тЖТ 4,096 (рдПрдХ рдореЛрдард╛ wing)/24тЖТ 256 (рдПрдХ рдЫреЛрдЯрд╛ wing)/28тЖТ 16 (рдПрдХ рдЕрдЧрджреА рдЫреЛрдЯреА рдЦреЛрд▓реА)
рдЖрдгрдЦреА рдПрдХ рдирд┐рдпрдо. рджреЛрди campuses рдиреА рддреЗрдЪ рдШрд░рд╛рдВрдЪреЗ рдирдВрдмрд░ рд╡рд╛рдкрд░рд▓реЗ, рддрд░ 10.0.5.9 рд╕рд╛рдареАрдЪреНрдпрд╛ рдкрддреНрд░рд╛рд▓рд╛
рдХреЛрдгрддреНрдпрд╛ campus рд▓рд╛ рдЬрд╛рдпрдЪреЗ рддреЗ рдХрд│рдгрд╛рд░ рдирд╛рд╣реА. рдореНрд╣рдгреВрди рдЬреА range рддреБрдореНрд╣реА рдХрдзреАрддрд░реА рдЬреЛрдбреВ рд╢рдХрддрд╛, рддреА рддреБрдореНрд╣реА
рдХрдзреАрдЪ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
ip["10.20.96.15<br/>00001010.00010100.01100000.00001111"]
p16["/16 тЖТ first 16 bits fixed<br/>65,536 addresses"]
p20["/20 тЖТ 4,096"]
p24["/24 тЖТ 256"]
p28["/28 тЖТ 16"]
ip --> p16 --> p20 --> p24 --> p28
office["ЁЯПв office 10.0.0.0/16"]
bad["10.0.128.0/17 тЖТ OVERLAPS"]
good["10.20.0.0/16 тЖТ no overlap"]
office -.-> bad
office -.-> good
ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрдХреГрддреА + рдПрдХ lab: https://school-edh.pages.dev/vpc/lesson-diagrams.html#l02
тЭУ рдХрд╛рдп
- IPv4 address тАФ 32 bits, 0 рддреЗ 255 рдордзреАрд▓ рдЪрд╛рд░ рдирдВрдмрд░рд╛рдВрдд рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ.
- CIDR notation тАФ
address/prefix. Prefix рдореНрд╣рдгрдЬреЗ рд╕реБрд░реБрд╡рд╛рддреАрдЪреЗ рдХрд┐рддреА bits рдард░рд▓реЗрд▓реЗ рдЖрд╣реЗрдд. рддреНрдпрд╛ block рдордзреНрдпреЗ2^(32 тИТ prefix)рдкрддреНрддреЗ рдЕрд╕рддрд╛рдд:/20тЖТ 2^12 = 4,096. - Private ranges (RFC 1918) тАФ
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16. рддреНрдпрд╛ public internet рд╡рд░ рдХрдзреАрдЪ route рд╣реЛрдд рдирд╛рд╣реАрдд, рдореНрд╣рдгреВрди рдкреНрд░рддреНрдпреЗрдХ company рддреНрдпрд╛ рдЖрдд рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддреЗ. VPC рд╕рд╛рдареА рдпрд╛рдВрдкреИрдХреАрдЪ рдПрдХ рд╡рд╛рдкрд░рд╛. - VPC рдЪрд╛ рдЖрдХрд╛рд░ тАФ VPC рдЪрд╛ IPv4 block /16 рдЖрдгрд┐ /28 рдЪреНрдпрд╛ рджрд░рдореНрдпрд╛рди рдЕрд╕рддреЛ. рдирдВрддрд░ рддреБрдореНрд╣реА secondary CIDR blocks рдЬреЛрдбреВ рд╢рдХрддрд╛ (рдзрдбрд╛ 12), рдкрдг primary block рдмрджрд▓рддрд╛ рдХрд┐рдВрд╡рд╛ рд▓рд╣рд╛рди рдХрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА.
- Overlap тАФ рджреЛрди blocks рдордзреНрдпреЗ рдПрдХ рдЬрд░реА рдкрддреНрддрд╛ рд╕рд╛рд░рдЦрд╛ рдЕрд╕рд▓рд╛ рддрд░реА рддреЗ overlap рд╣реЛрддрд╛рдд.
10.0.128.0/17рд╣рд╛10.0.0.0/16рдЪреНрдпрд╛ рдЖрдд рдмрд╕рддреЛ, рдореНрд╣рдгреВрди рддреЗ overlap рд╣реЛрддрд╛рдд. Overlap рд╣реЛрдгрд╛рд░реА networks peer рдХрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реАрдд (рдзрдбрд╛ 09) рдЖрдгрд┐ Transit Gateway рдХрд┐рдВрд╡рд╛ VPN рдордзреВрди route рдХрд░рдгреЗ рддреНрд░рд╛рд╕рджрд╛рдпрдХ рдЕрд╕рддреЗ. - IPAM тАФ VPC IP Address Manager: company рдЪрд╛ IP рдЖрд░рд╛рдЦрдбрд╛ pools рдореНрд╣рдгреВрди рдареЗрд╡рдгрд╛рд░реА рдЖрдгрд┐ рдирд╡реНрдпрд╛ VPCs рдирд╛ overlap рди рд╣реЛрдгрд╛рд░реЗ blocks рд╡рд╛рдЯрдгрд╛рд░реА AWS service.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг range рд╣рд╛ рдЕрд╕рд╛ рдПрдХрдЪ рдирд┐рд░реНрдгрдп рдЖрд╣реЗ рдЬреЛ рдирдВрддрд░ рдмрджрд▓рдгреЗ рдЬрд╡рд│рдЬрд╡рд│ рдЕрд╢рдХреНрдп рдЕрд╕рддреЗ. Servers рдиреА рднрд░рд▓реЗрд▓реНрдпрд╛ VPC рд▓рд╛ рдПрдХрд╛ weekend рдордзреНрдпреЗ рдкреБрдиреНрд╣рд╛ numbering рдХрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА. рдЬреНрдпрд╛ рджрд┐рд╡рд╢реА office VPN, partner рдХрд┐рдВрд╡рд╛ рджреБрд╕рд░рд╛ Region рдЬреЛрдбрд╛рд╡рд╛ рд▓рд╛рдЧрддреЛ, рддреНрдпрд╛ рджрд┐рд╡рд╢реА overlap рд╣реЛрдгрд╛рд░реА range рдПрдХрд╛ рддрд╛рд╕рд╛рдЪреНрдпрд╛ рдХрд╛рдорд╛рдЪреЗ migration рдХрд░реВрди рдЯрд╛рдХрддреЗ.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
vpc/demo.py рдордзреАрд▓ cidr() рдЪрд╛рд░ prefixes рд╕рд╛рдареА 2 ** (32 - p) рдЫрд╛рдкрддреЛ, рдЖрдгрд┐ рдордЧ
overlaps() рдиреЗ рддреАрди рдЙрдореЗрджрд╡рд╛рд░ ranges office network 10.0.0.0/16 рд╡рд┐рд░реБрджреНрдз рддрдкрд╛рд╕рддреЛ.
vpc/network.py рдордзреАрд▓ overlaps() рд╣реА Python рдЪреНрдпрд╛
ipaddress.ip_network(...).overlaps(...) рд╡рд░ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдПрдХ рдУрд│ рдЖрд╣реЗ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 vpc/demo.py cidr
python3 - <<'EOF'
import sys, ipaddress; sys.path.insert(0, "vpc"); from network import overlaps
for c in ("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "10.20.0.0/16", "8.8.8.0/24"):
print(c.ljust(15), "private" if ipaddress.ip_network(c).is_private else "PUBLIC")
for p in (17, 22, 26):
print(f"/{p}", 2 ** (32 - p))
print(overlaps("10.20.0.0/16", "10.21.0.0/16"), overlaps("10.20.0.0/16", "10.20.200.0/24"))
EOF
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
cidr рдЪрд╛рд░ рдЖрдХрд╛рд░ рдЫрд╛рдкрддреЛ тАФ 65,536, 4,096, 256, 16 тАФ рдЖрдгрд┐ рдордЧ:
10.0.0.0/16 vs the office network 10.0.0.0/16: OVERLAPS тАФ pick another range
10.0.128.0/17 vs the office network 10.0.0.0/16: OVERLAPS тАФ pick another range
10.20.0.0/16 vs the office network 10.0.0.0/16: no overlap тЖТ safe to connect later
рддреБрдордЪрд╛ snippet рддреАрди RFC 1918 ranges рд╕рд╛рдареА рдЖрдгрд┐ 10.20.0.0/16 рд╕рд╛рдареА private рдЫрд╛рдкрддреЛ,
8.8.8.0/24 рд╕рд╛рдареА PUBLIC; рдордЧ /17 32768, /22 1024, /26 64; рдЖрдгрд┐ рдордЧ False True тАФ
10.21.0.0/16 рд╢реЗрдЬрд╛рд░реА рдЖрд╣реЗ, рдкрдг 10.20.200.0/24 campus рдЪреНрдпрд╛ рдЖрдд рдЖрд╣реЗ.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рддреБрдореНрд╣реА рдХреЛрдгрддрд╛рд╣реА prefix рдЖрдХрд╛рд░ рдореНрд╣рдгреВрди рд╡рд╛рдЪреВ рд╢рдХрддрд╛, private range рдЖрдгрд┐ public range рдордзрд▓рд╛ рдлрд░рдХ рдУрд│рдЦреВ рд╢рдХрддрд╛, рдЖрдгрд┐ overlap рдмрд╛рдВрдзрд▓рд╛ рдЬрд╛рдгреНрдпрд╛рдкреВрд░реНрд╡реАрдЪ рдкрдХрдбреВ рд╢рдХрддрд╛.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рдкреНрд░рддреНрдпреЗрдХ account рдордзреНрдпреЗ
10.0.0.0/16"рдХрд╛рд░рдг wizard рдиреЗ рд╕реБрдЪрд╡рд▓реЗ" тАФ рдордЧ рддреЗ рд╕рдЧрд│реЗ рдХрдзреАрдЪ рдЬреЛрдбрддрд╛ рдпреЗрдд рдирд╛рд╣реАрдд - office network, partner рдХрд┐рдВрд╡рд╛ VPN рд╢реА overlap рд╣реЛрдгрд╛рд░реА range рдирд┐рд╡рдбрдгреЗ
- рдЦреВрдкрдЪ рд▓рд╣рд╛рди VPC (EKS cluster рд╕рд╛рдареА
/24тАФ pods VPC рдЪреЗ рдкрддреНрддреЗ рдШреЗрддрд╛рдд) - рддреБрдордЪреНрдпрд╛ рдорд╛рд▓рдХреАрдЪреЗ рдирд╕рд▓реЗрд▓реЗ public рдкрддреНрддреЗ "private" range рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рдгреЗ
- primary CIDR рдирдВрддрд░ рдмрджрд▓рддрд╛ рдпреЗрдИрд▓ рдЕрд╕реЗ рд╕рдордЬрдгреЗ тАФ рдпреЗрдд рдирд╛рд╣реА; рддреБрдореНрд╣реА рдлрдХреНрдд рдЖрдгрдЦреА рдЬреЛрдбреВ рд╢рдХрддрд╛
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд
рдореЛрдареНрдпрд╛ teams рдкреВрд░реНрдг company рд╕рд╛рдареА рдПрдХрдЪ IP рдЖрд░рд╛рдЦрдбрд╛ рдареЗрд╡рддрд╛рдд тАФ рдкреНрд░рддреНрдпреЗрдХ VPC, рдкреНрд░рддреНрдпреЗрдХ Region, office, partners тАФ рдЖрдгрд┐ рддреНрдпрд╛рддреВрдирдЪ ranges рд╡рд╛рдЯрддрд╛рдд, рд╕рд╣рд╕рд╛ IPAM рд╡рд╛рдкрд░реВрди.
рдЦрд▒реНрдпрд╛ account рд╡рд░ (AWS CLI рдЖрдгрд┐ credentials рд▓рд╛рдЧрддрд╛рдд; IDs рдЙрджрд╛рд╣рд░рдгрд╛рджрд╛рдЦрд▓ рдЖрд╣реЗрдд):
aws ec2 create-ipam --operating-regions RegionName=ap-south-1
aws ec2 create-ipam-pool --ipam-scope-id ipam-scope-0123456789abcdef0 \
--address-family ipv4 --locale ap-south-1
aws ec2 provision-ipam-pool-cidr --ipam-pool-id ipam-pool-0123456789abcdef0 --cidr 10.0.0.0/8
aws ec2 create-vpc --ipv4-ipam-pool-id ipam-pool-0123456789abcdef0 --ipv4-netmask-length 16
тПня╕П рдкреБрдвреЗ
Campus рдХрдбреЗ 65,536 рдШрд░рд╛рдВрдЪреЗ рдирдВрдмрд░ рдЖрд╣реЗрдд. рдЖрддрд╛ рддреЗ wings рдордзреНрдпреЗ рд╡рд╛рдЯрд╛, рдкреНрд░рддреНрдпреЗрдХ рдЗрдорд╛рд░рддреАрд╕рд╛рдареА рдПрдХ тАФ subnets рдЖрдгрд┐ AZs, рдЖрдгрд┐ AWS рдкреНрд░рддреНрдпреЗрдХ wing рдордзреНрдпреЗ рд╕реНрд╡рддрдГрдХрдбреЗ рдареЗрд╡рддреЛ рддреЗ 5 рдирдВрдмрд░.
git checkout lesson-03-subnets-azs