Изучение различных методов создания общедоступных и частных подсетей по диапазону IP-адресов

В компьютерных сетях подсети играют решающую роль в разделении сети на более мелкие управляемые сегменты. Публичные и частные подсети обычно используются для контроля доступа и повышения безопасности сетевых инфраструктур. В этой статье блога мы рассмотрим несколько методов создания общедоступных и частных подсетей на основе диапазонов IP-адресов, а также приведем примеры кода.

Метод 1: использование нотации CIDR в конфигурации интерфейса сетевого оборудования
Пример кода:

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip address 192.168.0.1 255.255.255.0 (Private Subnet)
Router(config-if)# exit
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip address 203.0.113.1 255.255.255.0 (Public Subnet)
Router(config-if)# exit
Router(config)# exit

Метод 2. Использование виртуального частного облака (VPC) в облачных средах (например, AWS, Azure)
Пример кода (AWS CLI):

aws ec2 create-subnet --cidr-block 192.168.0.0/24 --vpc-id vpc-12345678 (Private Subnet)
aws ec2 create-subnet --cidr-block 203.0.113.0/24 --vpc-id vpc-12345678 (Public Subnet)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

Метод 4: использование контроллеров программно-конфигурируемых сетей (SDN)
Пример кода (Python с платформой Ryu SDN):

from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
class MyController(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
    def __init__(self, *args, kwargs):
        super(MyController, self).__init__(*args, kwargs)
    @set_ev_cls(ofp_event.EventOFPSwitchFeatures, MAIN_DISPATCHER)
    def switch_features_handler(self, ev):
        datapath = ev.msg.datapath
        ofproto = datapath.ofproto
        parser = datapath.ofproto_parser
        # Install flow rules for public and private subnets
        match_private = parser.OFPMatch(eth_type=0x0800, ipv4_dst='192.168.0.0/24')
        actions_private = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER)]
        self.add_flow(datapath, 10, match_private, actions_private)
        match_public = parser.OFPMatch(eth_type=0x0800, ipv4_dst='203.0.113.0/24')
        actions_public = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER)]
        self.add_flow(datapath, 10, match_public, actions_public)
    def add_flow(self, datapath, priority, match, actions):
        ofproto = datapath.ofproto
        parser = datapath.ofproto_parser
        instructions = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]
        flow_mod = parser.OFPFlowMod(datapath=datapath, priority=priority, match=match, instructions=instructions)
        datapath.send_msg(flow_mod)

Создание общедоступных и частных подсетей на основе диапазонов IP-адресов имеет важное значение для сегментации сети и обеспечения безопасности. В этой статье мы рассмотрели несколько методов, в том числе использование нотации CIDR, облачных сред, трансляции сетевых адресов и программно-определяемых сетей. Понимая эти методы и примеры их кода, вы сможете эффективно реализовать общедоступные и частные подсети в своей сетевой инфраструктуре.