Сетевые технологии · 4 min read · Jan 15, 2026

Переадресация портов с помощью rinetd на Debian Etch

Переадресация портов с помощью rinetd на Debian Etch

Версия 1.0
Автор: Фалко Тимме

Эта статья показывает, как вы можете сделать переадресацию портов с помощью rinetd на Debian Etch. rinetd позволяет вам перенаправлять порты с одной системы на другую. Это полезно, если вы переместили свои веб-сайты на новый сервер с другим IP-адресом. Конечно, вы изменили свои DNS-записи, но может пройти несколько дней, прежде чем изменения DNS вступят в силу, и здесь на помощь приходит rinetd. Если клиенты все еще используют старые DNS-записи, rinetd может перенаправить их на новый сервер. С rinetd вам не нужно возиться с правилами iptables.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом примере я пытаюсь перенаправить HTTP-трафик (порт 80) с IP-адреса 192.168.0.101 на IP-адрес 192.168.0.100.

Пожалуйста, обратите внимание, что rinetd не может перенаправлять FTP, потому что FTP требует более одного сокета.

2 Установка и настройка rinetd

Чтобы установить rinetd, мы просто выполняем

apt-get install rinetd

Конфигурационный файл rinetd находится по адресу /etc/rinetd.conf. Чтобы перенаправить HTTP-трафик с 192.168.0.101 на 192.168.0.100, мы добавляем строку 192.168.0.101 80 192.168.0.100 80:

vi /etc/rinetd.conf

| # # это конфигурационный файл для rinetd, сервера интернет-переадресации # # здесь вы можете указать глобальные правила разрешения и запрета # только IP-адреса сопоставляются, имена хостов не могут быть указаны здесь # используемые вами подстановочные знаки: * и ? # # разрешить 192.168.2.* # запретить 192.168.2.1? # # правила переадресации приходят сюда # # вы можете указать правила разрешения и запрета после конкретного правила переадресации # чтобы применить только к этому правилу переадресации # # bindadress bindport connectaddress connectport 192.168.0.101 80 192.168.0.100 80 # информация о ведении журнала logfile /var/log/rinetd.log # раскомментируйте следующую строку, если хотите формат журнала в стиле веб-сервера # logcommon |

Затем мы перезапускаем rinetd:

/etc/init.d/rinetd restart

Теперь выполните

netstat -tap

и вы должны увидеть, что rinetd слушает на порту 80 ( www):

server2:~# netstat -tap
Активные интернет-соединения (сервера и установленные)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :sunrpc : LISTEN 1956/portmap
tcp 0 0 server2.example.com:www
: LISTEN 2485/rinetd
tcp 0 0
:3025 : LISTEN 2347/rpc.statd
tcp 0 0 :auth : LISTEN 2306/inetd
tcp 0 0 localhost.localdom:smtp
: LISTEN 2294/exim4
tcp6 0 0
:ssh : LISTEN 2326/sshd
tcp6 0 0 server2.example.com:ssh ::ffff:192.168.0.3:4776 ESTABLISHED2409/0
server2:~#

Теперь, когда вы направляете свой браузер на веб-страницу по IP-адресу 192.168.0.101, он должен получить эту страницу с сервера с IP-адресом 192.168.0.100.

Вместо указания номеров портов в /etc/rinetd.conf вы также можете использовать имена служб. Имена служб хранятся в /etc/services, поэтому, когда вы открываете этот файл, вы увидите, что служба для порта 80 называется www на Debian.

grep 80 /etc/services

server2:~# grep 80 /etc/services
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol

socks 1080/tcp # socks proxy server
socks 1080/udp
amanda 10080/tcp # amanda backup services
amanda 10080/udp
omirr 808/tcp omirrd # online mirror
omirr 808/udp omirrd
canna 5680/tcp # cannaserver
zope-ftp 8021/tcp # zope management by ftp
webcache 8080/tcp # WWW caching service
tproxy 8081/tcp # Transparent Proxy
omniorb 8088/tcp # OmniORB
omniorb 8088/udp
server2:~#

Таким образом, вы можете использовать следующую конфигурацию в /etc/rinetd.conf, она имеет такой же эффект, как первая:

vi /etc/rinetd.conf

| # # это конфигурационный файл для rinetd, сервера интернет-переадресации # # здесь вы можете указать глобальные правила разрешения и запрета # только IP-адреса сопоставляются, имена хостов не могут быть указаны здесь # используемые вами подстановочные знаки: * и ? # # разрешить 192.168.2.* # запретить 192.168.2.1? # # правила переадресации приходят сюда # # вы можете указать правила разрешения и запрета после конкретного правила переадресации # чтобы применить только к этому правилу переадресации # # bindadress bindport connectaddress connectport 192.168.0.101 www 192.168.0.100 www # информация о ведении журнала logfile /var/log/rinetd.log # раскомментируйте следующую строку, если хотите формат журнала в стиле веб-сервера # logcommon |

И чтобы заставить rinetd слушать на всех IP-адресах, которые настроены на системе, где он установлен, мы можем использовать 0.0.0.0 в качестве bindaddress:

vi /etc/rinetd.conf

| # # это конфигурационный файл для rinetd, сервера интернет-переадресации # # здесь вы можете указать глобальные правила разрешения и запрета # только IP-адреса сопоставляются, имена хостов не могут быть указаны здесь # используемые вами подстановочные знаки: * и ? # # разрешить 192.168.2.* # запретить 192.168.2.1? # # правила переадресации приходят сюда # # вы можете указать правила разрешения и запрета после конкретного правила переадресации # чтобы применить только к этому правилу переадресации # # bindadress bindport connectaddress connectport 0.0.0.0 80 192.168.0.100 80 # информация о ведении журнала logfile /var/log/rinetd.log # раскомментируйте следующую строку, если хотите формат журнала в стиле веб-сервера # logcommon |

После того, как вы перезапустили rinetd…

/etc/init.d/rinetd restart

… rinetd теперь должен слушать на всех интерфейсах ( *:www):

netstat -tap

server2:~# netstat -tap
Активные интернет-соединения (сервера и установленные)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :sunrpc : LISTEN 1956/portmap
**tcp 0 0
:www : LISTEN 2503/rinetd*
tcp 0 0
:3025 : LISTEN 2347/rpc.statd
tcp 0 0 :auth : LISTEN 2306/inetd
tcp 0 0 localhost.localdom:smtp
: LISTEN 2294/exim4
tcp 0 0 server2.example.com:www 192.168.0.3:4798 TIME_WAIT -
tcp6 0 0
:ssh : LISTEN 2326/sshd
tcp6 0 0 server2.example.com:ssh ::ffff:192.168.0.3:4776 ESTABLISHED2409/0
server2:~#

3 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.