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

Переадресация портов IPTABLES общедоступный IP

У меня есть компьютер linuxbox_1.eth0 public ip 89.40.x.y eth1 public ip 85.121.a.b у меня есть другой linuxbox_2. общедоступный IP-адрес ethx 86.34.c.d

я хочу перенаправить порт 8001 из linuxbox_1 eth0 89.40.x.y: 8001 на linuxbox_1 eth1 85.121.a.b,

а затем снова перенаправить порт 8001 из linuxbox_1 eth1 85.121.a.b: 8001 на linuxbox_2 ethx 86.34.c.d: 80

Я искал ответы с помощью Google "который знает все", но на этот раз это не удалось. я хотел бы использовать IPTABLES или любой другой инструмент, например rinetd. Я попробовал rinetd, но он почему-то ошибается, извините за мой плохой английский. 10q

Что вы имеете в виду под "ошибками Rinetd"? Вы получаете ошибку при запуске rinetd? Он запускается, но не слушает, как вы ожидали? Какую конфигурацию вы давали на каждой машине? (вы должны добавить эту деталь к своему вопросу).

Правильный синтаксис для двух описанных вами перенаправлений:

89.40.x.y     8001    85.121.a.b    8001
85.121.a.b    8001    86.34.c.d     80

но если и 89.40.x.y, и 85.121.a.b связаны с интерфейсами на одном сервере, ни одна строка

89.40.x.y     8001    86.34.c.d     80

Покажи фокус?

РЕДАКТИРОВАТЬ: поскольку вы говорите, что хотите иметь трафик до 86.34.c.d для движения по маршруту, связанному с 85.121.a.b, тогда у вас возникнет проблема с маршрутизацией. Вы можете принудительно направить пакеты для определенного адреса через определенный интерфейс с помощью:

route add -host 86.34.c.d eth1

Если вы запустите команду route (без параметров) он отобразит вашу текущую таблицу маршрутизации, чтобы вы могли сделать это до и после, чтобы увидеть разницу. route del 86.34.c.d удалит новый маршрут. Это предполагает, что трафик оборудования от eth1, в конечном итоге, спускается, может направлять пакеты для 86.34.c.d в нужное место.

Чтобы сделать изменение постоянным (чтобы оно пережило перезагрузку), вам нужно добавить команду в соответствующее место в сценариях запуска (лучший способ сделать это зависит от того, какой вариант Linux вы используете). Не делайте этого, пока не убедитесь, что он работает должным образом - вы не хотите случайно изменить таблицу маршрутизации, чтобы вы не смогли добраться до машины из вашего текущего местоположения и не применили неправильный маршрут после перезагрузки.

Переадресация портов iptables перезаписывает заголовки TCP, поэтому ваше приложение будет видеть пакет, приходящий с последнего прыжка в цепочке пересылки. Так что, если это то, что вы пытаетесь взломать, переадресация портов iptables вам не поможет.

Подмена IP мощь помогите, но это сложно. И это может не сработать, если ваше приложение не может отправить напрямую исходному отправителю напрямую.

(Я не использовал rinetd, поэтому не могу здесь комментировать.)

Это можно сделать с помощью iptables ' DNAT цель (в нац PREROUTING). Но в контрольном списке есть несколько вещей:

  • net.ipv4.ip_forward=1
  • iptables FORWARD цепочка также разрешает пересылку этих пакетов
  • Источник запроса (IP) также переводится (SNAT/MASQUERADE) в противном случае пункт назначения попытается ответить напрямую (или если он не маршрутизируется должным образом, например, в случае, если он использует блок DNATing в качестве шлюза).