[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/port-forwarding-linux":3,"mdc-okrjn8-key":1192,"mdc-nxbig8-key":1202,"mdc--908lei-key":1210,"mdc-r58lgp-key":1241,"mdc-viondi-key":1249,"mdc--qb4roi-key":1257,"mdc--e4p9tx-key":1265,"mdc-ya0jff-key":1273,"related-/guides/linux/iptables-basics,/guides/linux/firewalld-setup,/errors/linux/connection-timed-out":1281},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":1128,"code":1128,"createdAt":1129,"description":1130,"difficulty":1131,"draft":1132,"estimatedTime":1133,"extension":1134,"faq":1135,"howToSteps":1148,"howToTotalTime":1160,"image":1128,"keywords":1161,"locale":1172,"meta":1173,"navigation":1174,"path":1175,"platform":1176,"related":1177,"section":1181,"seo":1182,"severity":1128,"stem":1183,"summary":1184,"tags":1185,"twitterCreator":1128,"twitterSite":1128,"type":1190,"updatedAt":1129,"__hash__":1191},"content_ru/guides/linux/port-forwarding-linux.md","Настройка port forwarding на Linux: подробное руководство",[7,8,9,10],"Ubuntu 20.04+","CentOS 7+","Debian 10+","Fedora 35+","FixPedia Team",{"type":13,"value":14,"toc":1105},"minimark",[15,20,24,27,31,34,157,161,168,189,200,237,251,255,261,275,474,478,484,628,631,635,638,643,650,736,740,751,765,769,889,893,897,920,924,935,939,950,954,969,973,986,990,1040,1044,1063,1067,1101],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23],"p",{},"Port forwarding (перенаправление портов) позволяет сделать локальный сервис, работающий на внутреннем IP-адресе и порту, доступным из внешней сети через публичный IP и порт вашего Linux-сервера. Это незаменимо, когда вы хотите, например, предоставить доступ к веб-серверу на порту 8080, базе данных или SSH-демону, находящимся за NAT, без изменения конфигурации самих сервисов.",[21,25,26],{},"После выполнения этого гайда вы сможете настроить перенаправление входящего трафика с порта 80 на внутренний сервер 192.168.1.100:8080, или с порта 2222 на внутренний SSH-сервер 192.168.1.100:22 — в зависимости от ваших задач.",[16,28,30],{"id":29},"требования-подготовка","Требования / Подготовка",[21,32,33],{},"Перед началом убедитесь, что:",[35,36,37,50,108,150],"ul",{},[38,39,40,41,45,46,49],"li",{},"У вас есть доступ к Linux-системе (Ubuntu, CentOS, Debian, Fedora и т.д.) с правами ",[42,43,44],"strong",{},"sudo"," или ",[42,47,48],{},"root",".",[38,51,52,53,56,57,60,61],{},"На системе установлен и работает ",[42,54,55],{},"iptables"," (для классических дистрибутивов) или ",[42,58,59],{},"firewalld"," (для CentOS/RHEL/Fedora). Проверить можно командами:\n",[62,63,68],"pre",{"className":64,"code":65,"language":66,"meta":67,"style":67},"language-bash shiki shiki-themes github-light github-dark","sudo systemctl status iptables   # для iptables\nsudo systemctl status firewalld  # для firewalld\n","bash","",[69,70,71,93],"code",{"__ignoreMap":67},[72,73,76,79,83,86,89],"span",{"class":74,"line":75},"line",1,[72,77,44],{"class":78},"sScJk",[72,80,82],{"class":81},"sZZnC"," systemctl",[72,84,85],{"class":81}," status",[72,87,88],{"class":81}," iptables",[72,90,92],{"class":91},"sJ8bj","   # для iptables\n",[72,94,96,98,100,102,105],{"class":74,"line":95},2,[72,97,44],{"class":78},[72,99,82],{"class":81},[72,101,85],{"class":81},[72,103,104],{"class":81}," firewalld",[72,106,107],{"class":91},"  # для firewalld\n",[38,109,110,111,114,115,118,119,135,136],{},"Вы знаете ",[42,112,113],{},"внутренний IP-адрес"," и ",[42,116,117],{},"порт"," сервиса, который хотите пробросить. Узнать можно через:\n",[62,120,122],{"className":64,"code":121,"language":66,"meta":67,"style":67},"ip addr show\n",[69,123,124],{"__ignoreMap":67},[72,125,126,129,132],{"class":74,"line":75},[72,127,128],{"class":78},"ip",[72,130,131],{"class":81}," addr",[72,133,134],{"class":81}," show\n","\nили\n",[62,137,139],{"className":64,"code":138,"language":66,"meta":67,"style":67},"hostname -I\n",[69,140,141],{"__ignoreMap":67},[72,142,143,146],{"class":74,"line":75},[72,144,145],{"class":78},"hostname",[72,147,149],{"class":148},"sj4cs"," -I\n",[38,151,152,153,156],{},"У вас есть ",[42,154,155],{},"публичный IP-адрес"," (или доменное имя), на который будет приходить входящий трафик. Если сервер находится в локальной сети, это IP вашего роутера, и на нём должен быть настроен проброс портов (port forwarding на роутере) на ваш Linux-сервер.",[16,158,160],{"id":159},"шаг-1-включение-ip-форвардинга-в-ядре","Шаг 1: Включение IP-форвардинга в ядре",[21,162,163,164,167],{},"По умолчанию в большинстве дистрибутивов Linux ",[42,165,166],{},"IP-форвардинг"," отключен. Это значит, что ядро не будет перенаправлять пакеты между сетевыми интерфейсами. Включите его временно:",[62,169,171],{"className":64,"code":170,"language":66,"meta":67,"style":67},"sudo sysctl -w net.ipv4.ip_forward=1\n",[69,172,173],{"__ignoreMap":67},[72,174,175,177,180,183,186],{"class":74,"line":75},[72,176,44],{"class":78},[72,178,179],{"class":81}," sysctl",[72,181,182],{"class":148}," -w",[72,184,185],{"class":81}," net.ipv4.ip_forward=",[72,187,188],{"class":148},"1\n",[21,190,191,192,195,196,199],{},"Чтобы включить навсегда (чтобы настройка сохранилась после перезагрузки), отредактируйте файл ",[69,193,194],{},"/etc/sysctl.conf"," или создайте новый в ",[69,197,198],{},"/etc/sysctl.d/",":",[62,201,203],{"className":64,"code":202,"language":66,"meta":67,"style":67},"echo \"net.ipv4.ip_forward = 1\" | sudo tee /etc/sysctl.d/99-ipforward.conf\nsudo sysctl -p /etc/sysctl.d/99-ipforward.conf\n",[69,204,205,226],{"__ignoreMap":67},[72,206,207,210,213,217,220,223],{"class":74,"line":75},[72,208,209],{"class":148},"echo",[72,211,212],{"class":81}," \"net.ipv4.ip_forward = 1\"",[72,214,216],{"class":215},"szBVR"," |",[72,218,219],{"class":78}," sudo",[72,221,222],{"class":81}," tee",[72,224,225],{"class":81}," /etc/sysctl.d/99-ipforward.conf\n",[72,227,228,230,232,235],{"class":74,"line":95},[72,229,44],{"class":78},[72,231,179],{"class":81},[72,233,234],{"class":148}," -p",[72,236,225],{"class":81},[238,239,240],"blockquote",{},[21,241,242,243,246,247,250],{},"⚠️ ",[42,244,245],{},"Важно",": Если вы используете IPv6, также включите форвардинг для него, добавив ",[69,248,249],{},"net.ipv6.conf.all.forwarding=1"," в тот же файл.",[16,252,254],{"id":253},"шаг-2-настройка-port-forwarding-с-iptables","Шаг 2: Настройка port forwarding с iptables",[21,256,257,258,260],{},"Этот способ подходит для дистрибутивов, где по умолчанию используется ",[42,259,55],{}," (например, Ubuntu до 20.04, Debian, CentOS 6/7 без firewalld).",[21,262,263,264,267,268,271,272,49],{},"Предположим, вы хотите пробросить входящие подключения на ",[42,265,266],{},"порт 80"," (HTTP) к внутреннему серверу с IP ",[69,269,270],{},"192.168.1.100"," на порт ",[69,273,274],{},"8080",[276,277,278,380],"ol",{},[38,279,280,283,284,287,288,291,292,338],{},[42,281,282],{},"Добавьте правило DNAT"," (изменение адреса назначения) в таблицу ",[69,285,286],{},"nat"," для цепочки ",[69,289,290],{},"PREROUTING",". Это правило сработает для входящих пакетов, предназначенных для порта 80:",[62,293,295],{"className":64,"code":294,"language":66,"meta":67,"style":67},"sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080\n",[69,296,297],{"__ignoreMap":67},[72,298,299,301,303,306,309,312,315,317,320,323,326,329,332,335],{"class":74,"line":75},[72,300,44],{"class":78},[72,302,88],{"class":81},[72,304,305],{"class":148}," -t",[72,307,308],{"class":81}," nat",[72,310,311],{"class":148}," -A",[72,313,314],{"class":81}," PREROUTING",[72,316,234],{"class":148},[72,318,319],{"class":81}," tcp",[72,321,322],{"class":148}," --dport",[72,324,325],{"class":148}," 80",[72,327,328],{"class":148}," -j",[72,330,331],{"class":81}," DNAT",[72,333,334],{"class":148}," --to-destination",[72,336,337],{"class":81}," 192.168.1.100:8080\n",[35,339,340,346,352,362,368,374],{},[38,341,342,345],{},[69,343,344],{},"-t nat"," — указывает таблицу NAT.",[38,347,348,351],{},[69,349,350],{},"-A PREROUTING"," — добавляет правило в конец цепочки PREROUTING (обрабатывает пакеты до маршрутизации).",[38,353,354,357,358,361],{},[69,355,356],{},"-p tcp"," — протокол TCP (для UDP замените на ",[69,359,360],{},"udp",").",[38,363,364,367],{},[69,365,366],{},"--dport 80"," — целевой порт на внешнем интерфейсе.",[38,369,370,373],{},[69,371,372],{},"-j DNAT"," — цель — изменить адрес назначения.",[38,375,376,379],{},[69,377,378],{},"--to-destination 192.168.1.100:8080"," — новый адрес и порт.",[38,381,382,385,386,389,390,426,429,430,433,434,471,473],{},[42,383,384],{},"Разрешите проброс пакетов"," в цепочке ",[69,387,388],{},"FORWARD",". Это нужно, чтобы ядро не блокировало пересылку пакетов к внутреннему серверу:",[62,391,393],{"className":64,"code":392,"language":66,"meta":67,"style":67},"sudo iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 8080 -j ACCEPT\n",[69,394,395],{"__ignoreMap":67},[72,396,397,399,401,403,406,408,410,413,416,418,421,423],{"class":74,"line":75},[72,398,44],{"class":78},[72,400,88],{"class":81},[72,402,311],{"class":148},[72,404,405],{"class":81}," FORWARD",[72,407,234],{"class":148},[72,409,319],{"class":81},[72,411,412],{"class":148}," -d",[72,414,415],{"class":148}," 192.168.1.100",[72,417,322],{"class":148},[72,419,420],{"class":148}," 8080",[72,422,328],{"class":148},[72,424,425],{"class":81}," ACCEPT\n",[427,428],"br",{},"Если у внутреннего сервера есть необходимость выходить в интернет через этот же шлюз, добавьте правило ",[42,431,432],{},"MASQUERADE"," (маскировка) для исходящего трафика:",[62,435,437],{"className":64,"code":436,"language":66,"meta":67,"style":67},"sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 8080 -j MASQUERADE\n",[69,438,439],{"__ignoreMap":67},[72,440,441,443,445,447,449,451,454,456,458,460,462,464,466,468],{"class":74,"line":75},[72,442,44],{"class":78},[72,444,88],{"class":81},[72,446,305],{"class":148},[72,448,308],{"class":81},[72,450,311],{"class":148},[72,452,453],{"class":81}," POSTROUTING",[72,455,234],{"class":148},[72,457,319],{"class":81},[72,459,412],{"class":148},[72,461,415],{"class":148},[72,463,322],{"class":148},[72,465,420],{"class":148},[72,467,328],{"class":148},[72,469,470],{"class":81}," MASQUERADE\n",[427,472],{},"Но для простого входящего port forwarding это часто не требуется, если внутренний сервер имеет правильный маршрут обратно клиенту.",[16,475,477],{"id":476},"шаг-3-настройка-port-forwarding-с-firewalld","Шаг 3: Настройка port forwarding с firewalld",[21,479,480,481,483],{},"Для дистрибутивов с ",[42,482,59],{}," (CentOS 7+, RHEL 7+, Fedora) используйте более простой синтаксис с зонами.",[276,485,486,516,576],{},[38,487,488,491,492,495,496,511,513,514,49],{},[42,489,490],{},"Определите активную зону"," (например, ",[69,493,494],{},"public","):",[62,497,499],{"className":64,"code":498,"language":66,"meta":67,"style":67},"sudo firewall-cmd --get-default-zone\n",[69,500,501],{"__ignoreMap":67},[72,502,503,505,508],{"class":74,"line":75},[72,504,44],{"class":78},[72,506,507],{"class":81}," firewall-cmd",[72,509,510],{"class":148}," --get-default-zone\n",[427,512],{},"Обычно это ",[69,515,494],{},[38,517,518,521,522,199,525,542],{},[42,519,520],{},"Добавьте правило port forwarding"," в эту зону. Для проброса порта 80 на ",[69,523,524],{},"192.168.1.100:8080",[62,526,528],{"className":64,"code":527,"language":66,"meta":67,"style":67},"sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080\n",[69,529,530],{"__ignoreMap":67},[72,531,532,534,536,539],{"class":74,"line":75},[72,533,44],{"class":78},[72,535,507],{"class":81},[72,537,538],{"class":148}," --zone=public",[72,540,541],{"class":148}," --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080\n",[35,543,544,550,556,564,570],{},[38,545,546,549],{},[69,547,548],{},"--add-forward-port"," — добавляет правило проброса порта.",[38,551,552,555],{},[69,553,554],{},"port=80"," — внешний порт.",[38,557,558,561,562,361],{},[69,559,560],{},"proto=tcp"," — протокол (можно ",[69,563,360],{},[38,565,566,569],{},[69,567,568],{},"toaddr=192.168.1.100"," — внутренний IP.",[38,571,572,575],{},[69,573,574],{},"toport=8080"," — внутренний порт.",[38,577,578,581,582,601],{},[42,579,580],{},"Сделайте правило постоянным"," (чтобы оно сохранилось после перезагрузки):",[62,583,585],{"className":64,"code":584,"language":66,"meta":67,"style":67},"sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080 --permanent\n",[69,586,587],{"__ignoreMap":67},[72,588,589,591,593,595,598],{"class":74,"line":75},[72,590,44],{"class":78},[72,592,507],{"class":81},[72,594,538],{"class":148},[72,596,597],{"class":148}," --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080",[72,599,600],{"class":148}," --permanent\n",[238,602,603,610],{},[21,604,605,606,609],{},"💡 ",[42,607,608],{},"Совет",": Если ваш внутренний сервер должен иметь доступ в интернет через этот же шлюз, включите маскарадинг:",[62,611,613],{"className":64,"code":612,"language":66,"meta":67,"style":67},"sudo firewall-cmd --zone=public --add-masquerade --permanent\n",[69,614,615],{"__ignoreMap":67},[72,616,617,619,621,623,626],{"class":74,"line":75},[72,618,44],{"class":78},[72,620,507],{"class":81},[72,622,538],{"class":148},[72,624,625],{"class":148}," --add-masquerade",[72,627,600],{"class":148},[629,630],"in-article-ad",{},[16,632,634],{"id":633},"шаг-4-сохранение-правил","Шаг 4: Сохранение правил",[21,636,637],{},"Правила iptables и firewalld по-разному сохраняются.",[639,640,642],"h3",{"id":641},"для-iptables","Для iptables",[21,644,645,646,649],{},"На большинстве дистрибутивов правила iptables ",[42,647,648],{},"не сохраняются автоматически"," после перезагрузки. Используйте:",[35,651,652,697],{},[38,653,654,657,658,199,661,676,678,679],{},[42,655,656],{},"Ubuntu/Debian"," с пакетом ",[69,659,660],{},"iptables-persistent",[62,662,664],{"className":64,"code":663,"language":66,"meta":67,"style":67},"sudo netfilter-persistent save\n",[69,665,666],{"__ignoreMap":67},[72,667,668,670,673],{"class":74,"line":75},[72,669,44],{"class":78},[72,671,672],{"class":81}," netfilter-persistent",[72,674,675],{"class":81}," save\n",[427,677],{},"Или вручную:",[62,680,682],{"className":64,"code":681,"language":66,"meta":67,"style":67},"sudo iptables-save > /etc/iptables/rules.v4\n",[69,683,684],{"__ignoreMap":67},[72,685,686,688,691,694],{"class":74,"line":75},[72,687,44],{"class":78},[72,689,690],{"class":81}," iptables-save",[72,692,693],{"class":215}," >",[72,695,696],{"class":81}," /etc/iptables/rules.v4\n",[38,698,699,702,703,719,721,722],{},[42,700,701],{},"CentOS 6/7"," (если не используется firewalld):",[62,704,706],{"className":64,"code":705,"language":66,"meta":67,"style":67},"sudo service iptables save\n",[69,707,708],{"__ignoreMap":67},[72,709,710,712,715,717],{"class":74,"line":75},[72,711,44],{"class":78},[72,713,714],{"class":81}," service",[72,716,88],{"class":81},[72,718,675],{"class":81},[427,720],{},"или",[62,723,725],{"className":64,"code":724,"language":66,"meta":67,"style":67},"sudo /etc/init.d/iptables save\n",[69,726,727],{"__ignoreMap":67},[72,728,729,731,734],{"class":74,"line":75},[72,730,44],{"class":78},[72,732,733],{"class":81}," /etc/init.d/iptables",[72,735,675],{"class":81},[639,737,739],{"id":738},"для-firewalld","Для firewalld",[21,741,742,743,746,747,750],{},"Правила, добавленные с флагом ",[69,744,745],{},"--permanent",", сохраняются в конфигурационных файлах (",[69,748,749],{},"/etc/firewalld/","). После добавления правил перезагрузите firewalld, чтобы убедиться, что они применены:",[62,752,754],{"className":64,"code":753,"language":66,"meta":67,"style":67},"sudo firewall-cmd --reload\n",[69,755,756],{"__ignoreMap":67},[72,757,758,760,762],{"class":74,"line":75},[72,759,44],{"class":78},[72,761,507],{"class":81},[72,763,764],{"class":148}," --reload\n",[16,766,768],{"id":767},"шаг-5-проверка-работоспособности","Шаг 5: Проверка работоспособности",[276,770,771,831,841],{},[38,772,773,199,776],{},[42,774,775],{},"Просмотрите активные правила",[35,777,778,810],{},[38,779,780,781,805,806,114,808,49],{},"Для iptables:\n",[62,782,784],{"className":64,"code":783,"language":66,"meta":67,"style":67},"sudo iptables -t nat -L -n -v\n",[69,785,786],{"__ignoreMap":67},[72,787,788,790,792,794,796,799,802],{"class":74,"line":75},[72,789,44],{"class":78},[72,791,88],{"class":81},[72,793,305],{"class":148},[72,795,308],{"class":81},[72,797,798],{"class":148}," -L",[72,800,801],{"class":148}," -n",[72,803,804],{"class":148}," -v\n","\nВы должны увидеть правило в цепочке ",[69,807,290],{},[69,809,388],{},[38,811,812,813,827,828,49],{},"Для firewalld:\n",[62,814,816],{"className":64,"code":815,"language":66,"meta":67,"style":67},"sudo firewall-cmd --list-all\n",[69,817,818],{"__ignoreMap":67},[72,819,820,822,824],{"class":74,"line":75},[72,821,44],{"class":78},[72,823,507],{"class":81},[72,825,826],{"class":148}," --list-all\n","\nВ выводе ищите ",[69,829,830],{},"forward-ports",[38,832,833,836,837,840],{},[42,834,835],{},"Проверьте, что порт открыт"," на внешнем интерфейсе. Обратите внимание: после DNAT порт 80 на публичном интерфейсе не слушается демоном, а перенаправляется. Поэтому команда ",[69,838,839],{},"ss -tuln | grep :80"," может не показать ничего. Лучше проверить снаружи.",[38,842,843,199,846,883,885,886,49],{},[42,844,845],{},"Протестируйте извне",[35,847,848,880],{},[38,849,850,851,135,864],{},"С другого компьютера в сети или из интернета выполните:\n",[62,852,854],{"className":64,"code":853,"language":66,"meta":67,"style":67},"curl http://публичный_IP:80\n",[69,855,856],{"__ignoreMap":67},[72,857,858,861],{"class":74,"line":75},[72,859,860],{"class":78},"curl",[72,862,863],{"class":81}," http://публичный_IP:80\n",[62,865,867],{"className":64,"code":866,"language":66,"meta":67,"style":67},"telnet публичный_IP 80\n",[69,868,869],{"__ignoreMap":67},[72,870,871,874,877],{"class":74,"line":75},[72,872,873],{"class":78},"telnet",[72,875,876],{"class":81}," публичный_IP",[72,878,879],{"class":148}," 80\n",[38,881,882],{},"Должны получить ответ от внутреннего сервера (например, веб-страницу с порта 8080).",[427,884],{},"Если сервис использует HTTPS, замените порт 80 на 443 и протокол на ",[69,887,888],{},"https",[16,890,892],{"id":891},"возможные-проблемы","Возможные проблемы",[639,894,896],{"id":895},"правила-не-работают-после-перезагрузки","Правила не работают после перезагрузки",[35,898,899,908],{},[38,900,901,903,904,907],{},[42,902,55],{},": Вы не сохранили правила. Выполните ",[69,905,906],{},"sudo netfilter-persistent save"," или аналогичную команду для вашего дистрибутива.",[38,909,910,912,913,915,916,919],{},[42,911,59],{},": Вы добавили правило без ",[69,914,745],{},". Исправьте: ",[69,917,918],{},"sudo firewall-cmd --zone=public --add-forward-port=... --permanent"," и перезагрузите.",[639,921,923],{"id":922},"ошибка-permission-denied-или-operation-not-permitted","Ошибка \"Permission denied\" или \"Operation not permitted\"",[35,925,926],{},[38,927,928,929,931,932,934],{},"Убедитесь, что вы выполняете команды с ",[42,930,44],{}," или от ",[42,933,48],{},". Port forwarding требует прав администратора.",[639,936,938],{"id":937},"порт-уже-занят","Порт уже занят",[35,940,941,944],{},[38,942,943],{},"На внешнем порту (например, 80) уже работает другой сервис (веб-сервер Apache/Nginx). Остановите его или выберите другой порт.",[38,945,946,947],{},"Проверьте: ",[69,948,949],{},"sudo ss -tuln | grep :80",[639,951,953],{"id":952},"неверный-внутренний-ip","Неверный внутренний IP",[35,955,956],{},[38,957,958,959,961,962,114,965,968],{},"Убедитесь, что IP ",[69,960,270],{}," корректен и сервис на нём запущен. Проверьте: ",[69,963,964],{},"ping 192.168.1.100",[69,966,967],{},"curl http://192.168.1.100:8080"," с самого Linux-сервера.",[639,970,972],{"id":971},"конфликт-firewalld-и-iptables","Конфликт firewalld и iptables",[35,974,975],{},[38,976,977,978,981,982,985],{},"На системах с firewalld (CentOS 7+) ",[42,979,980],{},"не используйте iptables напрямую"," — firewalld управляет правилами через iptables. Вместо этого настраивайте всё через ",[69,983,984],{},"firewall-cmd",". Если вы случайно добавили правило iptables, оно может быть перезаписано firewalld.",[639,987,989],{"id":988},"блокировка-selinux-для-centosrhelfedora","Блокировка SELinux (для CentOS/RHEL/Fedora)",[35,991,992],{},[38,993,994,995,1010,1011],{},"SELinux по умолчанию может запрещать проброс портов. Временно отключите для теста:\n",[62,996,998],{"className":64,"code":997,"language":66,"meta":67,"style":67},"sudo setenforce 0\n",[69,999,1000],{"__ignoreMap":67},[72,1001,1002,1004,1007],{"class":74,"line":75},[72,1003,44],{"class":78},[72,1005,1006],{"class":81}," setenforce",[72,1008,1009],{"class":148}," 0\n","\nЕсли это помогло, настройте политики SELinux правильно. Для firewalld обычно проблем нет, но для iptables может потребоваться:\n",[62,1012,1014],{"className":64,"code":1013,"language":66,"meta":67,"style":67},"sudo semanage port -a -t http_port_t -p tcp 80\n",[69,1015,1016],{"__ignoreMap":67},[72,1017,1018,1020,1023,1026,1029,1031,1034,1036,1038],{"class":74,"line":75},[72,1019,44],{"class":78},[72,1021,1022],{"class":81}," semanage",[72,1024,1025],{"class":81}," port",[72,1027,1028],{"class":148}," -a",[72,1030,305],{"class":148},[72,1032,1033],{"class":81}," http_port_t",[72,1035,234],{"class":148},[72,1037,319],{"class":81},[72,1039,879],{"class":148},[639,1041,1043],{"id":1042},"внутренний-сервис-не-отвечает","Внутренний сервис не отвечает",[35,1045,1046,1060],{},[38,1047,1048,1049,1052,1053,1056,1057,49],{},"Проверьте, что сервис (например, веб-сервер) слушает на ",[69,1050,1051],{},"0.0.0.0:8080"," или на внутреннем IP, а не только на ",[69,1054,1055],{},"127.0.0.1",". Используйте ",[69,1058,1059],{},"sudo ss -tuln | grep 8080",[38,1061,1062],{},"Убедитесь, что на внутреннем сервере (если он отдельный) есть маршрут обратно к клиенту через ваш шлюз. Иногда требуется добавить статический маршрут или настроить NAT на шлюзе.",[639,1064,1066],{"id":1065},"проброс-udp-портов","Проброс UDP-портов",[35,1068,1069],{},[38,1070,1071,1072,1075,1076,1078,1079,1082,1083],{},"Для UDP используйте те же команды, но замените ",[69,1073,1074],{},"tcp"," на ",[69,1077,360],{}," в iptables или ",[69,1080,1081],{},"proto=udp"," в firewalld. Пример для firewalld:\n",[62,1084,1086],{"className":64,"code":1085,"language":66,"meta":67,"style":67},"sudo firewall-cmd --zone=public --add-forward-port=port=53:proto=udp:toaddr=192.168.1.100:toport=53 --permanent\n",[69,1087,1088],{"__ignoreMap":67},[72,1089,1090,1092,1094,1096,1099],{"class":74,"line":75},[72,1091,44],{"class":78},[72,1093,507],{"class":81},[72,1095,538],{"class":148},[72,1097,1098],{"class":148}," --add-forward-port=port=53:proto=udp:toaddr=192.168.1.100:toport=53",[72,1100,600],{"class":148},[1102,1103,1104],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":67,"searchDepth":95,"depth":95,"links":1106},[1107,1108,1109,1110,1111,1112,1117,1118],{"id":18,"depth":95,"text":19},{"id":29,"depth":95,"text":30},{"id":159,"depth":95,"text":160},{"id":253,"depth":95,"text":254},{"id":476,"depth":95,"text":477},{"id":633,"depth":95,"text":634,"children":1113},[1114,1116],{"id":641,"depth":1115,"text":642},3,{"id":738,"depth":1115,"text":739},{"id":767,"depth":95,"text":768},{"id":891,"depth":95,"text":892,"children":1119},[1120,1121,1122,1123,1124,1125,1126,1127],{"id":895,"depth":1115,"text":896},{"id":922,"depth":1115,"text":923},{"id":937,"depth":1115,"text":938},{"id":952,"depth":1115,"text":953},{"id":971,"depth":1115,"text":972},{"id":988,"depth":1115,"text":989},{"id":1042,"depth":1115,"text":1043},{"id":1065,"depth":1115,"text":1066},null,"2026-02-17 14:28:52","Узнайте, как настроить проброс портов на Linux с помощью iptables и firewalld. Пошаговые инструкции для Ubuntu, CentOS, Debian и других дистрибутивов. Решение за 10 минут!","medium",false,"10-15 мин","md",[1136,1139,1142,1145],{"question":1137,"answer":1138},"Что такое port forwarding и для чего он используется?","Port forwarding (перенаправление портов) — это техника, при которой сетевой трафик с одного порта на одном интерфейсе перенаправляется на другой порт и интерфейс. Это полезно для предоставления доступа к сервисам во внутренней сети (например, веб-серверу на порту 8080) из внешней сети через публичный IP.",{"question":1140,"answer":1141},"Какой способ лучше: iptables или firewalld?","iptables — низкоуровневый и гибкий инструмент, подходит для всех дистрибутивов, но требует ручного управления правилами. firewalld — более высокоуровневый, с зонами и persistent-хранилищем, используется по умолчанию в CentOS/RHEL/Fedora. Выбирайте в зависимости от вашего дистрибутива.",{"question":1143,"answer":1144},"Как проверить, что port forwarding работает?","Используйте команды `sudo iptables -t nat -L` или `sudo firewall-cmd --list-all` для просмотра правил. Затем с внешнего хоста попробуйте подключиться к публичному IP и порту (например, `curl http://ваш_публичный_IP:80`).",{"question":1146,"answer":1147},"Нужны ли root-права для настройки port forwarding?","Да, настройка правил iptables или firewalld требует прав администратора (sudo или root). Без них вы не сможете добавить правила в ядро.",[1149,1152,1154,1157],{"name":1150,"text":1151},"Включите IP-форвардинг в ядре Linux","Активируйте параметр net.ipv4.ip_forward, чтобы система могла пересылать пакеты между интерфейсами.",{"name":520,"text":1153},"В зависимости от вашего дистрибутива, настройте правило через iptables или firewalld для перенаправления трафика.",{"name":1155,"text":1156},"Сохраните правила для постоянного применения","Зафиксируйте правила, чтобы они оставались после перезагрузки системы, используя утилиты сохранения или конфигурационные файлы.",{"name":1158,"text":1159},"Протестируйте перенаправление портов","Подключитесь к сервису с внешней стороны, чтобы убедиться, что порт открыт и трафик перенаправляется корректно.","PT15M",[1162,1163,1164,1165,1166,1167,1168,1169,1170,1171],"port forwarding linux","перенаправление портов linux","настроить port forwarding на linux","iptables port forwarding","firewalld port forwarding","проброс портов linux","как открыть порт на linux","редирект портов linux","port forwarding ubuntu","port forwarding centos","ru_RU",{},true,"/guides/linux/port-forwarding-linux","linux",[1178,1179,1180],"/guides/linux/iptables-basics","/guides/linux/firewalld-setup","/errors/linux/connection-timed-out","Гайды Linux",{"title":5,"description":1130},"guides/linux/port-forwarding-linux","Этот гайд поможет вам настроить перенаправление портов на Linux, чтобы предоставить доступ к локальным сервисам из внешней сети. Мы рассмотрим способы с iptables и firewalld.",[1176,1186,1187,55,59,1188,1189],"port-forwarding","сеть","администрирование","перенаправление портов","guide","MvCnj7BR5d0VDfW9wpoppC0lGQLK9SHAImFitAIJoCg",{"data":1193,"body":1194},{},{"type":48,"children":1195},[1196],{"type":1197,"tag":21,"props":1198,"children":1199},"element",{},[1200],{"type":1201,"value":1138},"text",{"data":1203,"body":1204},{},{"type":48,"children":1205},[1206],{"type":1197,"tag":21,"props":1207,"children":1208},{},[1209],{"type":1201,"value":1141},{"data":1211,"body":1212},{},{"type":48,"children":1213},[1214],{"type":1197,"tag":21,"props":1215,"children":1216},{},[1217,1219,1225,1226,1232,1234,1240],{"type":1201,"value":1218},"Используйте команды ",{"type":1197,"tag":69,"props":1220,"children":1222},{"className":1221},[],[1223],{"type":1201,"value":1224},"sudo iptables -t nat -L",{"type":1201,"value":45},{"type":1197,"tag":69,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":1201,"value":1231},"sudo firewall-cmd --list-all",{"type":1201,"value":1233}," для просмотра правил. Затем с внешнего хоста попробуйте подключиться к публичному IP и порту (например, ",{"type":1197,"tag":69,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":1201,"value":1239},"curl http://ваш_публичный_IP:80",{"type":1201,"value":361},{"data":1242,"body":1243},{},{"type":48,"children":1244},[1245],{"type":1197,"tag":21,"props":1246,"children":1247},{},[1248],{"type":1201,"value":1147},{"data":1250,"body":1251},{},{"type":48,"children":1252},[1253],{"type":1197,"tag":21,"props":1254,"children":1255},{},[1256],{"type":1201,"value":1151},{"data":1258,"body":1259},{},{"type":48,"children":1260},[1261],{"type":1197,"tag":21,"props":1262,"children":1263},{},[1264],{"type":1201,"value":1153},{"data":1266,"body":1267},{},{"type":48,"children":1268},[1269],{"type":1197,"tag":21,"props":1270,"children":1271},{},[1272],{"type":1201,"value":1156},{"data":1274,"body":1275},{},{"type":48,"children":1276},[1277],{"type":1197,"tag":21,"props":1278,"children":1279},{},[1280],{"type":1201,"value":1159},[1282,1825],{"id":1283,"title":1284,"appliesTo":1285,"author":11,"body":1290,"canonical":1128,"code":1128,"createdAt":1770,"description":1771,"difficulty":1131,"draft":1132,"estimatedTime":1772,"extension":1134,"faq":1773,"howToSteps":1783,"howToTotalTime":1799,"image":1128,"keywords":1800,"locale":1172,"meta":1809,"navigation":1174,"path":1178,"platform":1176,"related":1810,"section":1814,"seo":1815,"severity":1128,"stem":1816,"summary":1817,"tags":1818,"twitterCreator":1128,"twitterSite":1128,"type":1190,"updatedAt":1770,"__hash__":1824},"content_ru/guides/linux/iptables-basics.md","Основы iptables: настройка файрвола Linux для защиты сервера",[1286,1287,1288,1289],"Ubuntu 22.04/24.04 LTS","Debian 12+","RHEL 9 / AlmaLinux 9","openSUSE Leap 15.5+",{"type":13,"value":1291,"toc":1760},[1292,1294,1303,1305,1314,1326,1336,1340,1343,1378,1396,1400,1403,1448,1458,1460,1464,1467,1521,1532,1536,1539,1609,1622,1626,1629,1646,1667,1669,1692,1710,1720,1746,1757],[16,1293,19],{"id":18},[21,1295,1296,1298,1299,1302],{},[69,1297,55],{}," — это стандартный инструмент фильтрации сетевого трафика в ядре Linux. Несмотря на постепенный переход экосистемы на ",[69,1300,1301],{},"nftables",", он остаётся рабочим стандартом для управления пакетами на серверах и рабочих станциях. Правильная настройка файрвола блокирует несанкционированный доступ, скрывает неиспользуемые сервисы и снижает нагрузку на сеть. После выполнения этого руководства вы сможете вручную управлять цепочками правил, открывать нужные порты и применять политику «запрещено всё, кроме разрешённого».",[16,1304,30],{"id":29},[21,1306,1307,1308,1310,1311,1313],{},"Перед началом убедитесь, что у вас есть ",[69,1309,48],{},"-доступ или привилегии ",[69,1312,44],{},". Все команды выполняются в терминале. Рекомендуется подключиться через SSH и проверить наличие утилиты:",[62,1315,1317],{"className":64,"code":1316,"language":66,"meta":67,"style":67},"iptables --version\n",[69,1318,1319],{"__ignoreMap":67},[72,1320,1321,1323],{"class":74,"line":75},[72,1322,55],{"class":78},[72,1324,1325],{"class":148}," --version\n",[21,1327,1328,1329,45,1332,1335],{},"Если команда не найдена, установите пакет через менеджер пакетов вашего дистрибутива (например, ",[69,1330,1331],{},"sudo apt install iptables",[69,1333,1334],{},"sudo dnf install iptables","). Убедитесь, что вы не блокируете себя: держите под рукой доступ к веб-консоли хостинг-провайдера на случай потери соединения.",[16,1337,1339],{"id":1338},"шаг-1-очистка-текущей-конфигурации","Шаг 1: Очистка текущей конфигурации",[21,1341,1342],{},"Начните с чистого состояния, чтобы старые правила не конфликтовали с новой политикой. Выполните команду для удаления всех правил из всех цепочек:",[62,1344,1346],{"className":64,"code":1345,"language":66,"meta":67,"style":67},"sudo iptables -F\nsudo iptables -X\nsudo iptables -t nat -F\n",[69,1347,1348,1357,1366],{"__ignoreMap":67},[72,1349,1350,1352,1354],{"class":74,"line":75},[72,1351,44],{"class":78},[72,1353,88],{"class":81},[72,1355,1356],{"class":148}," -F\n",[72,1358,1359,1361,1363],{"class":74,"line":95},[72,1360,44],{"class":78},[72,1362,88],{"class":81},[72,1364,1365],{"class":148}," -X\n",[72,1367,1368,1370,1372,1374,1376],{"class":74,"line":1115},[72,1369,44],{"class":78},[72,1371,88],{"class":81},[72,1373,305],{"class":148},[72,1375,308],{"class":81},[72,1377,1356],{"class":148},[21,1379,1380,1381,1384,1385,1388,1389,1391,1392,1395],{},"Опция ",[69,1382,1383],{},"-F"," очищает правила, а ",[69,1386,1387],{},"-X"," удаляет пользовательские цепочки. Команда с ",[69,1390,344],{}," сбрасывает правила трансляции адресов. Это безопасный этап, так как по умолчанию политика обычно установлена в ",[69,1393,1394],{},"ACCEPT",", и активные сессии не разорвутся.",[16,1397,1399],{"id":1398},"шаг-2-установка-политик-по-умолчанию","Шаг 2: Установка политик по умолчанию",[21,1401,1402],{},"Задайте строгие правила для всего входящего трафика. Сервер будет отклонять пакеты, если для них нет явного разрешения.",[62,1404,1406],{"className":64,"code":1405,"language":66,"meta":67,"style":67},"sudo iptables -P INPUT DROP\nsudo iptables -P FORWARD DROP\nsudo iptables -P OUTPUT ACCEPT\n",[69,1407,1408,1423,1435],{"__ignoreMap":67},[72,1409,1410,1412,1414,1417,1420],{"class":74,"line":75},[72,1411,44],{"class":78},[72,1413,88],{"class":81},[72,1415,1416],{"class":148}," -P",[72,1418,1419],{"class":81}," INPUT",[72,1421,1422],{"class":81}," DROP\n",[72,1424,1425,1427,1429,1431,1433],{"class":74,"line":95},[72,1426,44],{"class":78},[72,1428,88],{"class":81},[72,1430,1416],{"class":148},[72,1432,405],{"class":81},[72,1434,1422],{"class":81},[72,1436,1437,1439,1441,1443,1446],{"class":74,"line":1115},[72,1438,44],{"class":78},[72,1440,88],{"class":81},[72,1442,1416],{"class":148},[72,1444,1445],{"class":81}," OUTPUT",[72,1447,425],{"class":81},[21,1449,1450,1451,1454,1455,1457],{},"Здесь ",[69,1452,1453],{},"DROP"," означает молчаливое отбрасывание пакетов, что усложняет сканирование портов злоумышленниками. ",[69,1456,1394],{}," для исходящего трафика позволяет серверу скачивать обновления и обращаться к внешним API без дополнительных правил.",[629,1459],{},[16,1461,1463],{"id":1462},"шаг-3-разрешение-установленных-и-ssh-подключений","Шаг 3: Разрешение установленных и SSH-подключений",[21,1465,1466],{},"Чтобы текущая SSH-сессия не прервалась, разрешите трафик для уже установленных соединений и явно откройте порт удалённого доступа.",[62,1468,1470],{"className":64,"code":1469,"language":66,"meta":67,"style":67},"sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT\n",[69,1471,1472,1498],{"__ignoreMap":67},[72,1473,1474,1476,1478,1480,1482,1485,1488,1491,1494,1496],{"class":74,"line":75},[72,1475,44],{"class":78},[72,1477,88],{"class":81},[72,1479,311],{"class":148},[72,1481,1419],{"class":81},[72,1483,1484],{"class":148}," -m",[72,1486,1487],{"class":81}," conntrack",[72,1489,1490],{"class":148}," --ctstate",[72,1492,1493],{"class":81}," ESTABLISHED,RELATED",[72,1495,328],{"class":148},[72,1497,425],{"class":81},[72,1499,1500,1502,1504,1506,1508,1510,1512,1514,1517,1519],{"class":74,"line":95},[72,1501,44],{"class":78},[72,1503,88],{"class":81},[72,1505,311],{"class":148},[72,1507,1419],{"class":81},[72,1509,234],{"class":148},[72,1511,319],{"class":81},[72,1513,322],{"class":148},[72,1515,1516],{"class":148}," 22",[72,1518,328],{"class":148},[72,1520,425],{"class":81},[21,1522,1523,1524,1527,1528,1531],{},"Параметр ",[69,1525,1526],{},"-m conntrack"," отслеживает состояние пакетов. Если соединение уже инициировано, оно пропустится. Вторая команда разрешает входящие TCP-запросы на порт 22. Если вы используете нестандартный порт SSH, замените ",[69,1529,1530],{},"22"," на ваш номер.",[16,1533,1535],{"id":1534},"шаг-4-открытие-веб-портов-и-локального-доступа","Шаг 4: Открытие веб-портов и локального доступа",[21,1537,1538],{},"Если на сервере работает веб-сервер или базу данных, добавьте соответствующие правила. Также важно разрешить трафик на локальном интерфейсе, чтобы системные утилиты могли взаимодействовать друг с другом.",[62,1540,1542],{"className":64,"code":1541,"language":66,"meta":67,"style":67},"sudo iptables -A INPUT -i lo -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT\nsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT\n",[69,1543,1544,1564,1586],{"__ignoreMap":67},[72,1545,1546,1548,1550,1552,1554,1557,1560,1562],{"class":74,"line":75},[72,1547,44],{"class":78},[72,1549,88],{"class":81},[72,1551,311],{"class":148},[72,1553,1419],{"class":81},[72,1555,1556],{"class":148}," -i",[72,1558,1559],{"class":81}," lo",[72,1561,328],{"class":148},[72,1563,425],{"class":81},[72,1565,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584],{"class":74,"line":95},[72,1567,44],{"class":78},[72,1569,88],{"class":81},[72,1571,311],{"class":148},[72,1573,1419],{"class":81},[72,1575,234],{"class":148},[72,1577,319],{"class":81},[72,1579,322],{"class":148},[72,1581,325],{"class":148},[72,1583,328],{"class":148},[72,1585,425],{"class":81},[72,1587,1588,1590,1592,1594,1596,1598,1600,1602,1605,1607],{"class":74,"line":1115},[72,1589,44],{"class":78},[72,1591,88],{"class":81},[72,1593,311],{"class":148},[72,1595,1419],{"class":81},[72,1597,234],{"class":148},[72,1599,319],{"class":81},[72,1601,322],{"class":148},[72,1603,1604],{"class":148}," 443",[72,1606,328],{"class":148},[72,1608,425],{"class":81},[21,1610,1611,1612,1615,1616,1618,1619,49],{},"Флаг ",[69,1613,1614],{},"-i lo"," разрешает весь трафик на интерфейсе ",[69,1617,1055],{},". Правила для 80 и 443 портов делают сайты доступными для посетителей. Для других сервисов (например, MySQL на порту 3306) используйте аналогичный синтаксис, но ограничьте доступ доверенными IP через ",[69,1620,1621],{},"-s 192.168.1.0/24",[16,1623,1625],{"id":1624},"проверка-результата","Проверка результата",[21,1627,1628],{},"Убедитесь, что правила применились корректно, выведя текущую конфигурацию с номерами пакетов и объёмом трафика:",[62,1630,1632],{"className":64,"code":1631,"language":66,"meta":67,"style":67},"sudo iptables -L -n -v\n",[69,1633,1634],{"__ignoreMap":67},[72,1635,1636,1638,1640,1642,1644],{"class":74,"line":75},[72,1637,44],{"class":78},[72,1639,88],{"class":81},[72,1641,798],{"class":148},[72,1643,801],{"class":148},[72,1645,804],{"class":148},[21,1647,1648,1649,1652,1653,1656,1657,1660,1661,1663,1664,1666],{},"Ключ ",[69,1650,1651],{},"-n"," ускоряет вывод, отключая обратное DNS-резолвинг, а ",[69,1654,1655],{},"-v"," показывает статистику прохождения пакетов. Вы должны увидеть цепочку ",[69,1658,1659],{},"INPUT"," с политикой ",[69,1662,1453],{}," и строки ",[69,1665,1394],{}," для SSH, loopback и веб-портов. Попробуйте открыть сайт на сервере из браузера и подключиться по SSH с другого устройства. Оба действия должны пройти без задержек.",[16,1668,892],{"id":891},[21,1670,1671,1678,1679,1681,1682,45,1685,1056,1688,1691],{},[42,1672,1673,1674,1677],{},"Ошибка ",[69,1675,1676],{},"iptables v1.8.x: command not found"," или конфликты версий","\nВ современных дистрибутивах ",[69,1680,55],{}," может быть симлинком на ",[69,1683,1684],{},"iptables-nft",[69,1686,1687],{},"iptables-legacy",[69,1689,1690],{},"sudo update-alternatives --config iptables"," для выбора нужной реализации, если сталкиваетесь с ошибками совместимости.",[21,1693,1694,1697,1698,1701,1702,1705,1706,1709],{},[42,1695,1696],{},"Потеря доступа после применения политик","\nЕсли политика ",[69,1699,1700],{},"INPUT DROP"," активирована до разрешения SSH, вы окажетесь вне сессии. Восстановите доступ через VNC-консоль и выполните ",[69,1703,1704],{},"sudo iptables -F",". В будущем используйте утилиту ",[69,1707,1708],{},"iptables-apply"," с автоматическим таймаутом, которая откатит изменения при потере соединения.",[21,1711,1712,1715,1717,1718,199],{},[42,1713,1714],{},"Правила исчезают после перезагрузки",[69,1716,55],{}," хранит правила только в оперативной памяти. Для сохранения установите ",[69,1719,660],{},[62,1721,1723],{"className":64,"code":1722,"language":66,"meta":67,"style":67},"sudo apt install iptables-persistent\nsudo netfilter-persistent save\n",[69,1724,1725,1738],{"__ignoreMap":67},[72,1726,1727,1729,1732,1735],{"class":74,"line":75},[72,1728,44],{"class":78},[72,1730,1731],{"class":81}," apt",[72,1733,1734],{"class":81}," install",[72,1736,1737],{"class":81}," iptables-persistent\n",[72,1739,1740,1742,1744],{"class":74,"line":95},[72,1741,44],{"class":78},[72,1743,672],{"class":81},[72,1745,675],{"class":81},[21,1747,1748,1749,1752,1753,1756],{},"На системах с ",[69,1750,1751],{},"systemd"," сервис автоматически загружает правила из ",[69,1754,1755],{},"/etc/iptables/rules.v4"," при старте операционной системы. Регулярно обновляйте этот файл после внесения изменений в работу сети.",[1102,1758,1759],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":67,"searchDepth":95,"depth":95,"links":1761},[1762,1763,1764,1765,1766,1767,1768,1769],{"id":18,"depth":95,"text":19},{"id":29,"depth":95,"text":30},{"id":1338,"depth":95,"text":1339},{"id":1398,"depth":95,"text":1399},{"id":1462,"depth":95,"text":1463},{"id":1534,"depth":95,"text":1535},{"id":1624,"depth":95,"text":1625},{"id":891,"depth":95,"text":892},"2026-04-04 23:17:57","Гайд по настройке iptables в Linux. Научитесь создавать правила фильтрации, открывать порты и защищать сервер. Освойте базовую защиту файрвола за 15 минут.","15-20 мин",[1774,1777,1780],{"question":1775,"answer":1776},"Сохраняются ли правила iptables после перезагрузки сервера?","По умолчанию нет. Чтобы правила применялись автоматически, установите пакет `iptables-persistent` (Debian/Ubuntu) или настройте сервис `netfilter-persistent`.",{"question":1778,"answer":1779},"Можно ли использовать iptables на современных дистрибутивах?","Да. Многие системы переходят на `nftables`, однако `iptables` остаётся полностью рабочим. В современных ядрах команды автоматически транслируются в `nftables` через слой обратной совместимости.",{"question":1781,"answer":1782},"Что делать, если я случайно заблокировал себе доступ по SSH?","Воспользуйтесь консолью восстановления (VNC/Serial) из панели хостинг-провайдера. В ней выполните `iptables -F` для мгновенного сброса всех правил.",[1784,1787,1790,1793,1796],{"name":1785,"text":1786},"Проверка статуса и очистка старых правил","Убедитесь, что утилита установлена, и сбросьте текущие правила командой `iptables -F`, чтобы начать настройку с чистого листа.",{"name":1788,"text":1789},"Настройка политик по умолчанию","Установите политику DROP для входящего трафика и ACCEPT для исходящего, чтобы сервер отклонял всё, что явно не разрешено.",{"name":1791,"text":1792},"Разрешение установленных и SSH-подключений","Откройте порт 22 для TCP-трафика и разрешите уже установленные соединения, чтобы не потерять доступ к серверу.",{"name":1794,"text":1795},"Разрешение HTTP/HTTPS и локального трафика","Добавьте правила для портов 80 и 443, а также для loopback-интерфейса, чтобы веб-сервер и системные службы работали корректно.",{"name":1797,"text":1798},"Сохранение конфигурации","Запишите текущие правила в постоянный конфигурационный файл с помощью `iptables-save` или специализированного сервиса.","PT20M",[1801,1802,1803,1804,1805,1806,1807,1808],"iptables основы","настройка iptables linux","правила файрвола в linux","открыть порт iptables","iptables команда","защита сервера linux","базовая настройка iptables","iptables tutorial ru",{},[1811,1812,1813],"/guides/linux/ufw-basics","/guides/linux/nftables-migration","/guides/linux/ssh-hardening","Гайды по Linux",{"title":1284,"description":1771},"guides/linux/iptables-basics","В этом руководстве вы освоите базовые принципы работы с iptables, научитесь создавать правила фильтрации трафика и безопасно настраивать сетевой доступ. К концу статьи ваш сервер будет защищён от нежелательных подключений.",[1819,1820,55,1821,1822,1823],"Linux","Сетевая безопасность","firewall","Системное администрирование","netfilter","QyJneCqt109jcAlUw0dCQpuIvdxYoRATyJX2oQqt7GM",{"id":1826,"title":1827,"appliesTo":1828,"author":11,"body":1832,"canonical":1128,"code":1846,"createdAt":2262,"description":2263,"difficulty":1131,"draft":1132,"estimatedTime":1133,"extension":1134,"faq":2264,"howToSteps":2274,"howToTotalTime":1160,"image":1128,"keywords":2287,"locale":1172,"meta":2295,"navigation":1174,"path":1180,"platform":1176,"related":2296,"section":2300,"seo":2301,"severity":1131,"stem":2302,"summary":2303,"tags":2304,"twitterCreator":1128,"twitterSite":1128,"type":2306,"updatedAt":2262,"__hash__":2307},"content_ru/errors/linux/connection-timed-out.md","Connection timed out в Linux: причины и быстрое исправление",[1829,1287,1830,1831],"Ubuntu 22.04+","RHEL/CentOS 9+","Fedora 39+",{"type":13,"value":1833,"toc":2251},[1834,1838,1872,1875,1889,1893,1896,1941,1945,1949,1952,1995,1999,2002,2016,2019,2049,2061,2063,2067,2070,2130,2136,2140,2146,2204,2213,2217,2248],[16,1835,1837],{"id":1836},"что-означает-ошибка-connection-timed-out","Что означает ошибка Connection timed out",[21,1839,1673,1840,1843,1844,1847,1848,1851,1852,1855,1856,1858,1859,1858,1862,1865,1866,114,1869,49],{},[69,1841,1842],{},"Connection timed out"," (часто отображается как системный код ",[69,1845,1846],{},"ETIMEDOUT"," или ошибка ",[69,1849,1850],{},"110",") появляется, когда ваша система отправляет пакет инициализации соединения, но не получает отклика от удалённого сервера в течение установленного периода. В отличие от ",[69,1853,1854],{},"Connection refused",", где сервер явно отклоняет запрос, здесь ответ просто не доходит до клиента. Вы можете встретить это сообщение при использовании ",[69,1857,860],{},", ",[69,1860,1861],{},"wget",[69,1863,1864],{},"ssh",", в логах веб-серверов или при работе с пакетными менеджерами ",[69,1867,1868],{},"apt",[69,1870,1871],{},"dnf",[21,1873,1874],{},"Пример полного текста в терминале:",[62,1876,1878],{"className":64,"code":1877,"language":66,"meta":67,"style":67},"curl: (28) Connection timed out after 30001 milliseconds\n",[69,1879,1880],{"__ignoreMap":67},[72,1881,1882,1885],{"class":74,"line":75},[72,1883,1884],{"class":78},"curl:",[72,1886,1888],{"class":1887},"sVt8B"," (28) Connection timed out after 30001 milliseconds\n",[16,1890,1892],{"id":1891},"причины-возникновения","Причины возникновения",[21,1894,1895],{},"Проблема редко связана с повреждением системных файлов. В большинстве случаев дело в сетевой логике или конфигурации:",[35,1897,1898,1910,1916,1922,1928],{},[38,1899,1900,1903,1904,1858,1907,1909],{},[42,1901,1902],{},"Блокировка исходящего трафика фаерволом."," Встроенные ",[69,1905,1906],{},"ufw",[69,1908,59],{}," или корпоративные шлюзы могут отбрасывать пакеты без отправки ICMP-ответов.",[38,1911,1912,1915],{},[42,1913,1914],{},"Некорректные настройки DNS."," Система не может резолвить доменное имя, либо использует недоступный кэширующий сервер.",[38,1917,1918,1921],{},[42,1919,1920],{},"Проблемы маршрутизации на уровне провайдера."," Пакеты застревают на промежуточном узле, который не пересылает их дальше или не возвращает TTL-ошибку.",[38,1923,1924,1927],{},[42,1925,1926],{},"Неверно указанный порт или IP."," Сервер работает, но не на том порту, который вы запрашиваете, а NAT или фаервол молча отклоняет трафик.",[38,1929,1930,1933,1934,45,1937,1940],{},[42,1931,1932],{},"Слишком строгие параметры ядра Linux."," Значения ",[69,1935,1936],{},"net.ipv4.tcp_retries2",[69,1938,1939],{},"tcp_syn_retries"," занижены для нестабильных или перегруженных сетей.",[16,1942,1944],{"id":1943},"способы-решения","Способы решения",[639,1946,1948],{"id":1947},"способ-1-проверка-маршрута-и-доступности-хоста","Способ 1: Проверка маршрута и доступности хоста",[21,1950,1951],{},"Начните с диагностики, чтобы локализовать разрыв связи. Откройте терминал и выполните последовательную проверку:",[276,1953,1954,1965],{},[38,1955,1956,1957,1960,1961,1964],{},"Проверьте базовый отклик: ",[69,1958,1959],{},"ping -c 4 example.com",". Если вывод показывает ",[69,1962,1963],{},"100% packet loss",", проблема на уровне маршрутизации или IP-адреса.",[38,1966,1967,1968,1971,1972,1975,1976,1994],{},"Отследите путь следования пакетов. Установите утилиту ",[69,1969,1970],{},"mtr"," (или используйте ",[69,1973,1974],{},"traceroute","):\n",[62,1977,1979],{"className":64,"code":1978,"language":66,"meta":67,"style":67},"sudo mtr --report example.com\n",[69,1980,1981],{"__ignoreMap":67},[72,1982,1983,1985,1988,1991],{"class":74,"line":75},[72,1984,44],{"class":78},[72,1986,1987],{"class":81}," mtr",[72,1989,1990],{"class":148}," --report",[72,1992,1993],{"class":81}," example.com\n","\nЕсли обрыв происходит на хопе вашего провайдера, обратитесь в поддержку. Если пакеты доходят до целевого сервера, но не возвращаются — переходите к проверке портов и фаервола.",[639,1996,1998],{"id":1997},"способ-2-диагностика-локального-фаервола","Способ 2: Диагностика локального фаервола",[21,2000,2001],{},"Часто системный брандмауэр молча отбрасывает исходящие соединения. Временно отключите его для теста:",[35,2003,2004,2010],{},[38,2005,2006,2007],{},"Для Ubuntu/Debian: ",[69,2008,2009],{},"sudo ufw disable",[38,2011,2012,2013],{},"Для RHEL/Fedora: ",[69,2014,2015],{},"sudo systemctl stop firewalld",[21,2017,2018],{},"Попробуйте выполнить команду, вызывавшую ошибку. Если соединение установилось, добавьте разрешающее правило вместо полного отключения:",[62,2020,2022],{"className":64,"code":2021,"language":66,"meta":67,"style":67},"sudo ufw allow out 443/tcp\nsudo ufw reload\n",[69,2023,2024,2040],{"__ignoreMap":67},[72,2025,2026,2028,2031,2034,2037],{"class":74,"line":75},[72,2027,44],{"class":78},[72,2029,2030],{"class":81}," ufw",[72,2032,2033],{"class":81}," allow",[72,2035,2036],{"class":81}," out",[72,2038,2039],{"class":81}," 443/tcp\n",[72,2041,2042,2044,2046],{"class":74,"line":95},[72,2043,44],{"class":78},[72,2045,2030],{"class":81},[72,2047,2048],{"class":81}," reload\n",[238,2050,2051],{},[21,2052,2053,2054,45,2057,2060],{},"💡 Совет: После теста обязательно включите фаервол обратно командой ",[69,2055,2056],{},"sudo ufw enable",[69,2058,2059],{},"sudo systemctl start firewalld",", чтобы не оставлять систему уязвимой.",[629,2062],{},[639,2064,2066],{"id":2065},"способ-3-сброс-dns-и-замена-резолвера","Способ 3: Сброс DNS и замена резолвера",[21,2068,2069],{},"Если проблема возникает только при обращении по доменному имени, а по прямому IP работает, виноват DNS. Отредактируйте конфигурацию:",[276,2071,2072,2106],{},[38,2073,2074,2075,2078,2079,2094,2095,2098,2099],{},"Откройте файл ",[69,2076,2077],{},"/etc/resolv.conf"," в текстовом редакторе:\n",[62,2080,2082],{"className":64,"code":2081,"language":66,"meta":67,"style":67},"sudo nano /etc/resolv.conf\n",[69,2083,2084],{"__ignoreMap":67},[72,2085,2086,2088,2091],{"class":74,"line":75},[72,2087,44],{"class":78},[72,2089,2090],{"class":81}," nano",[72,2092,2093],{"class":81}," /etc/resolv.conf\n","\nЗамените текущие строки ",[69,2096,2097],{},"nameserver"," на публичные:\n",[62,2100,2104],{"className":2101,"code":2103,"language":1201,"meta":67},[2102],"language-text","nameserver 1.1.1.1\nnameserver 8.8.8.8\n",[69,2105,2103],{"__ignoreMap":67},[38,2107,2108,2109,2112,2113],{},"Если в системе активен ",[69,2110,2111],{},"systemd-resolved",", перезапустите службу для корректного применения изменений:\n",[62,2114,2116],{"className":64,"code":2115,"language":66,"meta":67,"style":67},"sudo systemctl restart systemd-resolved\n",[69,2117,2118],{"__ignoreMap":67},[72,2119,2120,2122,2124,2127],{"class":74,"line":75},[72,2121,44],{"class":78},[72,2123,82],{"class":81},[72,2125,2126],{"class":81}," restart",[72,2128,2129],{"class":81}," systemd-resolved\n",[21,2131,2132,2133,49],{},"Проверьте работу через ",[69,2134,2135],{},"curl -I https://example.com",[639,2137,2139],{"id":2138},"способ-4-коррекция-таймаутов-на-уровне-ос","Способ 4: Коррекция таймаутов на уровне ОС",[21,2141,2142,2143,199],{},"В нестабильных сетях или при высокой нагрузке стандартное ожидание ответа SYN-пакетов может быть недостаточным. Увеличьте лимиты через ",[69,2144,2145],{},"sysctl",[62,2147,2149],{"className":64,"code":2148,"language":66,"meta":67,"style":67},"# Просмотр текущего значения повторных попыток\nsysctl net.ipv4.tcp_retries2\n\n# Установка более длительного ожидания (по умолчанию обычно 15)\nsudo sysctl -w net.ipv4.tcp_retries2=20\nsudo sysctl -w net.ipv4.tcp_syn_retries=6\n",[69,2150,2151,2156,2163,2168,2174,2189],{"__ignoreMap":67},[72,2152,2153],{"class":74,"line":75},[72,2154,2155],{"class":91},"# Просмотр текущего значения повторных попыток\n",[72,2157,2158,2160],{"class":74,"line":95},[72,2159,2145],{"class":78},[72,2161,2162],{"class":81}," net.ipv4.tcp_retries2\n",[72,2164,2165],{"class":74,"line":1115},[72,2166,2167],{"emptyLinePlaceholder":1174},"\n",[72,2169,2171],{"class":74,"line":2170},4,[72,2172,2173],{"class":91},"# Установка более длительного ожидания (по умолчанию обычно 15)\n",[72,2175,2177,2179,2181,2183,2186],{"class":74,"line":2176},5,[72,2178,44],{"class":78},[72,2180,179],{"class":81},[72,2182,182],{"class":148},[72,2184,2185],{"class":81}," net.ipv4.tcp_retries2=",[72,2187,2188],{"class":148},"20\n",[72,2190,2192,2194,2196,2198,2201],{"class":74,"line":2191},6,[72,2193,44],{"class":78},[72,2195,179],{"class":81},[72,2197,182],{"class":148},[72,2199,2200],{"class":81}," net.ipv4.tcp_syn_retries=",[72,2202,2203],{"class":148},"6\n",[21,2205,2206,2207,2209,2210,49],{},"Для сохранения параметров после перезагрузки добавьте эти строки в файл ",[69,2208,194],{}," и выполните ",[69,2211,2212],{},"sudo sysctl -p",[16,2214,2216],{"id":2215},"профилактика","Профилактика",[21,2218,2219,2220,45,2223,2226,2227,114,2230,2233,2234,2236,2237,2239,2240,2243,2244,2247],{},"Чтобы ошибка не возвращалась, настройте мониторинг сетевых интерфейсов с помощью ",[69,2221,2222],{},"netstat -tuln",[69,2224,2225],{},"ss -tuln"," для отслеживания состояний ",[69,2228,2229],{},"ESTABLISHED",[69,2231,2232],{},"TIME_WAIT",". Регулярно обновляйте пакеты безопасности ядра и ",[69,2235,1301],{},"/",[69,2238,55],{},", так как в них часто исправляют утечки дескрипторов соединений. Если вы работаете с внешними API, всегда задавайте явные таймауты в клиентских библиотеках (например, ",[69,2241,2242],{},"timeout=10"," в Python ",[69,2245,2246],{},"requests","), чтобы не зависеть от глобальных параметров системы и получать понятные исключения вместо зависаний.",[1102,2249,2250],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":67,"searchDepth":95,"depth":95,"links":2252},[2253,2254,2255,2261],{"id":1836,"depth":95,"text":1837},{"id":1891,"depth":95,"text":1892},{"id":1943,"depth":95,"text":1944,"children":2256},[2257,2258,2259,2260],{"id":1947,"depth":1115,"text":1948},{"id":1997,"depth":1115,"text":1998},{"id":2065,"depth":1115,"text":2066},{"id":2138,"depth":1115,"text":2139},{"id":2215,"depth":95,"text":2216},"2026-04-05 00:00:51","Разобрались с ошибкой Connection timed out в Linux. Проверенные способы восстановления связи, настройка фаервола и DNS за 10 минут. Исправьте сейчас!",[2265,2268,2271],{"question":2266,"answer":2267},"Почему возникает ошибка Connection timed out?","Система отправила запрос, но не получила подтверждения в установленный срок. Чаще всего это происходит из-за активного фаервола, проблем с маршрутизацией или недоступности удалённого хоста.",{"question":2269,"answer":2270},"Как увеличить таймаут ожидания в curl или wget?","Используйте ключ `-m` или `--connect-timeout` для curl, а также `--timeout` для wget, указав нужное количество секунд вместо стандартного значения.",{"question":2272,"answer":2273},"Может ли проблема быть на стороне интернет-провайдера?","Да, если маршрутизация нарушена выше вашего роутера, пакеты теряются на промежуточных узлах. Проверьте доступность внешних ресурсов через traceroute и ping.",[2275,2278,2281,2284],{"name":2276,"text":2277},"Проверьте доступность хоста","Используйте утилиты ping и traceroute, чтобы убедиться, что удалённый сервер отвечает и пакеты не теряются по пути.",{"name":2279,"text":2280},"Проверьте настройки локального фаервола","Выполните команду проверки правил iptables или ufw, временно отключив их для диагностики блокировки порта.",{"name":2282,"text":2283},"Настройте DNS-резольвер","Измените серверы в /etc/resolv.conf на публичные (например, 8.8.8.8 или 1.1.1.1) и перезапустите службу networking.",{"name":2285,"text":2286},"Увеличьте системный таймаут","Отредактируйте параметры tcp_retries2 через sysctl, чтобы система дольше ждала подтверждения соединения.",[2288,2289,2290,2291,2292,2293,2294],"Connection timed out Linux","ошибка соединения ETIMEDOUT","curl connection timed out","проверка сети в Linux терминал","настройка iptables timeout","почему не подключается к серверу Ubuntu","диагностика DNS Linux",{},[2297,2298,2299],"/guides/linux/dns-troubleshooting","/errors/linux/connection-refused","/guides/linux/network-diagnostics","Ошибки Linux",{"title":1827,"description":2263},"errors/linux/connection-timed-out","Ошибка Connection timed out означает, что система не дождалась ответа от удалённого хоста. В материале вы найдёте пошаговые инструкции по диагностике сети, проверке фаервола и настройке таймаутов.",[1187,1819,2305,1821,860,1188],"troubleshooting","error","LijiZLxdGQbcMmODz-Hmp_U4YxTmovOLZpzRhZENaM4"]