Назад | Перейти на главную страницу

Как перенаправить соединение с одного интерфейса на другой под Linux

У меня есть Linux-бокс с двумя сетевыми интерфейсами, eth0, eth1. из eth1 я могу получить доступ к внутреннему веб-сайту, скажем, через порт 8080. извне я не могу получить доступ к этой сети. У меня вопрос: есть ли способ настроить что-то так, чтобы извне, похоже, что веб-сервер работает на порту 8080, и когда я подключаюсь к нему, он автоматически перенаправляет на eht1 внутренний сайт? Я попытался включить ip forward и добавить статический маршрут, но это не сработало. Спасибо.

Маршрутизирует ли этот ящик трафик между этими интерфейсами? Из того, что вы написали, я предполагаю, что на eth0 есть общедоступная сеть, подключенная к Интернету, а на eth1 есть частная локальная сеть.

Если это настройка и вы хотите получить доступ к веб-серверу в локальной сети из Интернета, вам необходимо использовать преобразование сетевых адресов (NAT).

В основном вам нужно определить внешний IP-адрес на «внешнем» интерфейсе и добавить правило iptables:

iptables -t nat -A PREROUTING -p tcp -d X.X.X.X --dport 8080 -j DNAT --to Y.Y.Y.Y:8080

X.X.X.X - это внешний адрес, а Y.Y.Y.Y - внутренний, на котором запущен веб-сервер. В этом сценарии вы также должны убедиться, что разрешаете трафик в прямой цепочке:

iptables -A FORWARD -p tcp -d Y.Y.Y.Y --dport 8080 -j ACCEPT

Для этого в вашем ящике должна быть включена пересылка:

sysctl net.ipv4.ip_forward=1 

или

echo 1 > /proc/sys/net/ipv4/ip_forward

Не уверен, что это ответ на ваш вопрос, но дал очень мало деталей в вашем вопросе.