В компьютерных сетях подсети играют решающую роль в разделении сети на более мелкие управляемые сегменты. Публичные и частные подсети обычно используются для контроля доступа и повышения безопасности сетевых инфраструктур. В этой статье блога мы рассмотрим несколько методов создания общедоступных и частных подсетей на основе диапазонов 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, облачных сред, трансляции сетевых адресов и программно-определяемых сетей. Понимая эти методы и примеры их кода, вы сможете эффективно реализовать общедоступные и частные подсети в своей сетевой инфраструктуре.