How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
11 KiB
136 lines
11 KiB
![]()
7 months ago
|
====== Некоторые подробности установки 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~~
|