У меня есть компьютер 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
FORWARD
цепочка также разрешает пересылку этих пакетовSNAT
/MASQUERADE
) в противном случае пункт назначения попытается ответить напрямую (или если он не маршрутизируется должным образом, например, в случае, если он использует блок DNATing в качестве шлюза).