💾 Archived View for betahowto.duckdns.org › yggdrasil:tunnels:jool captured on 2024-02-05 at 10:04:38. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
В статье ( /yggdrasil:tunnels:nat64 ) при описании установки и настройки jool в качестве NAT64 был использован очень "наивный" конфиг. В 99.9% случаев он будет работать, но иногда возможны некоторые проблемы. Плюс, там не описана возможность обратного (из clearnet в yggnet) проброса портов. В этой статье мы постараемся исправить этот недостаток.
^:!: DISCLAIMER^
| Еще раз хотелось бы напомниь: без настроек firewall ( /yggdrasil:firewall_setup ) ваша нода доступна из сети Yggdrasil всем и каждому. Если в результате через вашу ноду выйдут в "белый интернет" злые хакеры и взломают Пентагон / разместят на форуме призывы к свержению существующего строя / выложат в сеть детскую порнографию, то в первую очередь прийдут именно к вам. Не забывайте настраивать firewall (это относится не только к этой статье, а и в целом к использованию Yggdrasil). Если что - мы вас предупредили!|
Перед использованием nat64 необходимо выполнить следующее:
В **/etc/sysctl.conf** нужно добавить три строчки net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv4.ip_local_port_range=50000 65500
Значения в третьей строчке нужно выбирать из Ваших потребностей. Если на сервере, на котором вы поднимаете NAT64, много локальных сервисов, которые активно ходят в интернет - возможно Вам придётся увеличить этот диапазон. Если при выполнении команды sysctl net.ipv4.ip_local_port_range вы получили диапазон 32768 - 60999 и Вы не планируете большого количества сессий через Ваш NAT64 - вобще не вводите третью строчку. Следующее предупреждение настолько важное, что оно будет написано дважды, в этом разделе и в следующем:
:!: ВАЖНО: Диапазон портов выводимый командой sysctl net.ipv4.ip_local_port_range и список портов, которые "слушают" другие программы никогда не должен пересекаться с диапазоном портов используемых NAT64!!!
Базово файл /etc/jool/jool.conf должен выглядеть так:
{ "comment": "Configuration for the systemd NAT64 Jool service for yggdrasil.", "instance": "default", "framework": "netfilter", "global": { "comment": "Sample pool6 prefix", "pool6": "303:fafa:fefe:dede:ff::/96", "lowest-ipv6-mtu": 20000, "maximum-simultaneous-opens": 100 }, "comment": "Sample pool4 table", "pool4": [], "bib": [] }
Это - минимально-достаточный конфиг, при котором, скорее всего, обычный NAT64 будет работать без каких либо проблем. Проблемы будут в трёх случаях:
:!: ВАЖНО: Диапазон портов выводимый командой sysctl net.ipv4.ip_local_port_range и список портов, которые "слушают" другие программы никогда не должен пересекаться с диапазоном портов используемых NAT64!!!
Если ни один из этих случаев не касается Вас, и вы пришли сюда из статьи ( /yggdrasil:tunnels:nat64 ) - можете спокойно вернуться к чтению той статьи. Никаких проблем у Вас не будет.
И так, Вы прочитали предыдущий раздел и поняли, что у вас какие-то проблемы всё таки есть. Дальше будет написано как их решать.
Если пересекается только вывод net.ipv4.ip_local_port_range, то самый простой способ решения - поменять диапазон портов используемыйх системой.
Внесение в /etc/sysctl.conf строчки net.ipv4.ip_local_port_range = 32768 60999 скорее всего решит Вашу проблему. Это диапазон, используемый, например, в Ubuntu по умолчанию. Хватает им, хватит и Вам. Или назначьте свой диапазон. Главное - он не должен пересекаться с используемым диапазоном NAT64 по умолчанию.
Если-же, пересекается порт, который "слушает" какя либо программа - читайте дальше.
Придётся внести дополнительные настройки в файл /etc/jool/jool.conf в секцию pool4
"pool4": [ { "protocol": "TCP", "prefix": "1.1.1.1/32", "port range": "20000-49999" }, { "protocol": "UDP", "prefix": "1.1.1.1/32", "port range": "20000-49999", }, { "protocol": "ICMP", "prefix": "1.1.1.1/32", "port range": "1000-2000" } ], (вместо **1.1.1.1** Вам нужно указать тот "белый" IPv4, через который вы делаете NAT64) и внести изменения в **/etc/sysctl.conf**, добавив строчку **net.ipv4.ip_local_port_range=50000 65500**.
Собственно, вся эта статья затевалась именно для того, что бы написать про эту возможность (кто сказал, что использование данной вики в качестве личной записной книжки - плохая идея? :-) ). Допустим, необходимо все пакеты приходящие на 100-й и 105-й порт "белого" IPv4 адреса пробрасывать на 100-й и 105-й порт какого либо yggdrasil адреса. Нам потребуется внести следующие изменения в файл /etc/jool/jool.conf
"pool4": [ { "protocol": "TCP", "prefix": "1.1.1.1/32", "port range": "100" },{ "protocol": "TCP", "prefix": "1.1.1.1/32", "port range": "105" },{ "protocol": "TCP", "prefix": "1.1.1.1/32", "port range": "20000-49999", }, { "mark": 0, "protocol": "UDP", "prefix": "1.1.1.1/32", "port range": "20000-49999", }, { "mark": 0, "protocol": "ICMP", "prefix": "1.1.1.1/32", "port range": "1000-2000" } ], "bib": [ { "protocol": "TCP", "ipv6 address": "312:f7fc:fafe:d0d5:1::dead#80", "ipv4 address": "1.1.1.1#100" },{ "protocol": "TCP", "ipv6 address": "312:f7fc:fafe:d0d5:1::dead#443", "ipv4 address": "1.1.1.1#105" } ] } (вместо **1.1.1.1** указываем свой белый адрес, вместо **312:f7fc:fafe:d0d5:1::dead** адрес, куда нам нужно пробрасывать порт), и не забываем внести изменения в **/etc/sysctl.conf**, добавив строчку **net.ipv4.ip_local_port_range=50000 65500**.
Jool - это очень мощное средство, когда Вам необходимо связать между собой IPv6 и IPv4 сети. И тривиальным NAT64 оно не ограничивается. Настоятельно рекомендуется сходить к ним на сайт ( https://www.jool.mx/en ) и почитать документацию.