Network Address Translation¶
https://habr.com/ru/company/vasexperts/blog/316272/
https://ru.wikipedia.org/wiki/NAT
https://vasexperts.ru/blog/kogda-zakonchatsya-adresa-ipv4-cgnat/
https://www.smart-soft.ru/blog/tehnologija_preobrazovanija_setevyh_adresov_nat/
NAT- (Network Address Translation)- Технология трансляции сетевых адресов
NAT изначально был необходим, чтобы использовать ограниченное число публичных адресов ipv4 для доступа в интернет
кустройствам локальных сетей LAN.
По сути NAT, это по сути, преобразование приватных ipv4 адресов в публичные адреса ipv4, для осуществления, как правило, связности с интернетом.
Хотя есть ньюансы (как из одного анекдота про Петьку и Василия Иваныча)...
Знавал я локальную сеть... которая состояла почему-то из адресов,
принадлежащих чужой публичной сети другой страны...
и эта сеть NAT-илась в инетик чз валидный белый ip.
Тут "прямота рук" админа, который это организовывал просто зашкаливала,
а потом уже это легаси выпиливать никто почему то не хотел...
Весь инетик работал, собстно гря, кроме небольшого кусочка ипов из Франции...
"Заходишь так в локалку - и ощущаешь себя так, как будто попал во Францию,
ну положим в Прованс, а почему бы и да?!... гыгы! )"
Конценпции NAT¶
1. Статический NAT (Static NAT)¶
"Статический NAT" - трансляция внутреннего адреса во внешние один к одному,
можно обращаться к публичному адресу на определенный порт и проваливаешься
на внутренний адрес на этот же порт.
Cone NAT, Full Cone NAT - однозначная (взаимная) трансляция между парами
«внутренний адрес: внутренний порт» и «публичный адрес: публичный порт».
Любой внешний хост может инициировать соединение с внутренним хостом
(если это разрешено в правилах межсетевого экрана).
2. Динамический NAT (Dynamic NAT)¶
Динамический NAT - транслирует один внутренний адрес на внешний из предоставленного пула.
Тип динамического NAT работает с пулом публичных адресов,
которые назначаются на основе принципа «первым пришел, первым обслужен».
При запросе внутренним устройством доступа к интернету динамическим NAT производится назначение из пула
публичных ipv4 адресов . Как и в случае со статическим,
для динамического типа NAT необходимо достаточное число общедоступных адресов,
чтобы удовлетворить совокупное число одновременных пользовательских сеансов.
3. Перегруженный NAT (NAT Overload)¶
"NAT Overload" - когда, несколько внутренних адресов транслируется в один внешний
или в один ip выбираемый из пула адресов.
https://www.k-max.name/linux/netfilter-iptables-v-linux/
Классическая модель, например, для Linux систем, когда имеется один публичный ipv4
или пул публичных ipv4 адресов с помощью iptables,
а конкретно таблицы NAT трансляции iptables "table nat"
происходит трансляция локальных ip адресов локальной сети.
В отдельной таблице хранятся состояния соединений.
Посмотреть их можно командой conntrack
conntrack -L | more
tcp 6 49797 ESTABLISHED src=121.4.228.87 dst=109.196.210.39 sport=39324 dport=22 packets=1 bytes=52 [UNREPLIED] src=109.196.210.39 dst=121.4.228.87 sport=22 dport=39324 packets=0 bytes=0 mark=0 use=1
udp 17 7 src=192.168.2.26 dst=8.8.8.8 sport=65055 dport=53 packets=1 bytes=56 src=8.8.8.8 dst=109.196.210.39 sport=53 dport=65055 packets=1 bytes=92 mark=0 use=1
tcp 6 431999 ESTABLISHED src=192.168.2.15 dst=185.5.137.179 sport=55683 dport=443 packets=17 bytes=2905 src=185.5.137.179 dst=109.196.210.39 sport=443 dport=55683 packets=10 bytes=3289 [ASSURED] mark=0 use=1
tcp 6 66 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51611 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51611 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 113 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=52184 dport=3306 packets=10 bytes=679 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=52184 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 42 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51337 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51337 packets=8 bytes=1152 [ASSURED] mark=0 use=1
udp 17 108 src=192.168.2.149 dst=173.194.222.154 sport=60188 dport=443 packets=8 bytes=3703 src=173.194.222.154 dst=109.196.210.39 sport=443 dport=60188 packets=7 bytes=2947 [ASSURED] mark=0 use=1
tcp 6 69 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51660 dport=3306 packets=10 bytes=681 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51660 packets=9 bytes=1204 [ASSURED] mark=0 use=1
tcp 6 4 TIME_WAIT src=115.231.83.77 dst=109.196.210.39 sport=60194 dport=22 packets=14 bytes=2216 src=109.196.210.39 dst=115.231.83.77 sport=22 dport=60194 packets=13 bytes=2476 [ASSURED] mark=0 use=1
tcp 6 43 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51342 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51342 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 34 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51235 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51235 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 108437 ESTABLISHED src=49.234.27.210 dst=109.196.210.39 sport=37758 dport=22 packets=1 bytes=52 [UNREPLIED] src=109.196.210.39 dst=49.234.27.210 sport=22 dport=37758 packets=0 bytes=0 mark=0 use=1
tcp 6 44 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51352 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51352 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 34341 ESTABLISHED src=1.15.106.44 dst=109.196.210.39 sport=33748 dport=22 packets=1 bytes=64 [UNREPLIED] src=109.196.210.39 dst=1.15.106.44 sport=22 dport=33748 packets=0 bytes=0 mark=0 use=1
tcp 6 89 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51890 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51890 packets=9 bytes=1204 [ASSURED] mark=0 use=1
tcp 6 89508 ESTABLISHED src=94.191.62.195 dst=109.196.210.39 sport=39960 dport=22 packets=1 bytes=52 [UNREPLIED] src=109.196.210.39 dst=94.191.62.195 sport=22 dport=39960 packets=0 bytes=0 mark=0 use=1
tcp 6 21 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51084 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51084 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 28 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51175 dport=3306 packets=10 bytes=679 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51175 packets=8 bytes=1152 [ASSURED] mark=0 use=2
tcp 6 101 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=52049 dport=3306 packets=10 bytes=684 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=52049 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 57 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51523 dport=3306 packets=10 bytes=678 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51523 packets=9 bytes=1204 [ASSURED] mark=0 use=1
tcp 6 98 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51999 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51999 packets=8 bytes=1152 [ASSURED] mark=0 use=1
tcp 6 305297 ESTABLISHED src=119.45.239.75 dst=109.196.210.39 sport=58954 dport=22 packets=1 bytes=64 [UNREPLIED] src=109.196.210.39 dst=119.45.239.75 sport=22 dport=58954 packets=0 bytes=0 mark=0 use=1
tcp 6 31 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51192 dport=3306 packets=10 bytes=683 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51192 packets=9 bytes=1204 [ASSURED] mark=0 use=1
tcp 6 105 TIME_WAIT src=115.231.83.77 dst=109.196.210.39 sport=33234 dport=22 packets=14 bytes=2216 src=109.196.210.39 dst=115.231.83.77 sport=22 dport=33234 packets=13 bytes=2476 [ASSURED] mark=0 use=1
tcp 6 18 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51052 dport=3306 packets=10 bytes=916 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51052 packets=8 bytes=559 [ASSURED] mark=0 use=1
udp 17 29 src=109.196.210.39 dst=83.234.188.3 sport=50767 dport=53 packets=1 bytes=72 src=83.234.188.3 dst=109.196.210.39 sport=53 dport=50767 packets=1 bytes=129 mark=0 use=1
tcp 6 42 TIME_WAIT src=127.0.0.1 dst=127.0.0.1 sport=51323 dport=3306 packets=10 bytes=682 src=127.0.0.1 dst=127.0.0.1 sport=3306 dport=51323 packets=8 bytes=1152 [ASSURED] mark=0 use=1
icmp 1 27 src=192.168.2.254 dst=192.168.2.44 type=8 code=0 id=63004 packets=149848 bytes=13786016 [UNREPLIED] src=192.168.2.44 dst=192.168.2.254 type=0 code=0 id=63004 packets=0 bytes=0 mark=0 use
"CG-NAT" - по сути тоже тип NAT overload.
Только имеет свои особенности, в частности:
- "EIM - (Endpoint Independent Mapping)" - позволяет для каждого сочетания частного ip адреса и порта клиента
гарантировать то же сочетание публичных ip адресов и портов.
На некоторый период обеспечивает пользователя по сути статическим публичным ip - адресом и портом,
который можно использовать для внешних подключений (это важно для p2p, игр и мобильных устройств).
- "EIF (Endpoint Independent Filtering)" - отбрасывает пакеты, не предназначенные для внутренних адресов.
- "Hairpinning" - обеспечивающей доступ одной машины к другой внутри сети по внешнему адресу.
Одним важным преимуществом CGNAT является то, что административно есть возможность
ограничивать количество портов TCP и UDP, которые может использовать абонент.
Это позволяет эффективно распределять порты среди пользователей,
а также защищаться от DDoS-атак,
использующих ботнет-сети и забивающих все свободные порты абонентов.
Последнее обновление: 2023-05-29