socat
Соединяет два произвольных канала данных и перекачивает всё, что приходит с одного, в другой. Netcat с десятикратным числом типов адресов — и десятикратно более неудобным синтаксисом.
Каналами могут быть TCP, UDP, Unix-сокеты, файлы, каналы (pipes), псевдотерминалы, последовательные порты, подпроцесс или TLS-соединение — в любых сочетаниях. Поэтому socat решает одной командой то, что не берётся делать ни один другой инструмент: выставить Unix-сокет в сеть, терминировать TLS перед сервисом, который понимает только открытый текст, связать последовательный порт с TCP-портом или выдать программе настоящий терминал, без которого она отказывается запускаться.
Типичный вызов: socat -d -d TCP-LISTEN:8080,fork,reuseaddr TCP:internal:80. Читайте man-страницу — она огромная и полна примеров, а это единственный разумный способ освоить инструмент.