2024-02-10 12:53:55 +00:00

136 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== Некоторые подробности установки jool в качестве NAT64 ======
В статье [[yggdrasil:tunnels:nat64]] при описании установки и настройки jool в качестве NAT64 был использован очень "наивный" конфиг. В 99.9% случаев он будет работать, но иногда возможны некоторые проблемы. Плюс, там не описана возможность обратного (из clearnet в yggnet) проброса портов. В этой статье мы постараемся исправить этот недостаток.
^:!: DISCLAIMER^
| Еще раз хотелось бы напомниь: без [[yggdrasil:firewall_setup|настроек firewall]] ваша нода доступна из сети Yggdrasil всем и каждому. Если в результате через вашу ноду выйдут в "белый интернет" злые хакеры и взломают Пентагон / разместят на форуме призывы к свержению существующего строя / выложат в сеть детскую порнографию, то в первую очередь прийдут именно к вам. Не забывайте настраивать firewall (это относится не только к этой статье, а и в целом к использованию Yggdrasil). Если что - мы вас предупредили!|
===== Общая настройка системы =====
Перед использованием nat64 необходимо выполнить следующее:
- Посмотреть и запомнить/записать какие есть запущенные сервисы и на каких портах они слушают.
- Выполнить команду **sysctl net.ipv4.ip_local_port_range** и запомнить/записать диапазон портов.
==== Настройка sysctl.conf ====
В **/etc/sysctl.conf** нужно добавить три строчки <code>net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv4.ip_local_port_range=50000 65500
</code>
Значения в третьей строчке нужно выбирать из Ваших потребностей. Если на сервере, на котором вы поднимаете NAT64, много локальных сервисов, которые активно ходят в интернет - возможно Вам придётся увеличить этот диапазон. Если при выполнении команды **sysctl net.ipv4.ip_local_port_range** вы получили диапазон **32768 - 60999** и Вы не планируете большого количества сессий через Ваш NAT64 - вобще не вводите третью строчку. Следующее предупреждение настолько важное, что оно будет написано дважды, в этом разделе и в следующем:
:!: **ВАЖНО:** Диапазон портов выводимый командой **sysctl net.ipv4.ip_local_port_range** и список портов, которые "слушают" другие программы никогда не должен пересекаться с диапазоном портов используемых NAT64!!!
==== Настройка jool.conf ====
Базово файл **/etc/jool/jool.conf** должен выглядеть так:
<code>{
"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": []
}</code>
Это - минимально-достаточный конфиг, при котором, скорее всего, обычный NAT64 будет работать без каких либо проблем. Проблемы будут в трёх случаях:
- Если диапазон, который вывела команда **sysctl net.ipv4.ip_local_port_range** пересекается с диапазоном **61001 - 65535**, используемый jool по умолчанию (и Вы его не поменяли) или/и в этом диапазоне "слушает" какая либо программа.
- Если Вы хотите выпустить в публичную сеть через этот NAT64 много yggdrasil узлов, например офис или домашнюю сетку. Штатного диапазона Вам может просто не хватить.
- Если Вы планируете обратный проброc портов, которые не попадают в диапазон **61001 - 65535**
:!: **ВАЖНО:** Диапазон портов выводимый командой **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**
<code>
"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"
}
],</code> (вместо **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**
<code>
"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"
}
]
}</code> (вместо **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|сайт]] и почитать документацию.
~~DISCUSSION~~