Итак, у меня есть 2 экземпляра на AWS, поэтому я могу подключиться к ним по SSH напрямую (A, B) с моей домашней машины C.
Но я хочу настроить ящик A, чтобы я мог перенаправлять определенные соединения UDP и TCP из него в ящик B.
IPtables, похоже, то, что я хочу для этого (rinetd было бы неплохо, но похоже, что проект мертв и он охватывает только TCP).
Я следил за различными руководствами, но они, похоже, не работают + я думаю, мне все равно понадобится другое правило.
Это правила, которые я настроил в поле A для перенаправления сеанса SSH через ящик A в B:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 1044 -j DNAT --to-destination B:22
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source A
Я читал это как «взять TCP-пакеты, полученные на порт 1044, изменить их пункт назначения с поля A на ящик B», а затем «когда я отправлю измененные пакеты обратно в сеть, измените их источник на себя (A)»
Похоже, что руководство (а) считает, что нужны только эти две команды, но они не работают.
Мне интересно, как ящик A должен принимать ответы от B и изменять их источник на себя + пересылать их обратно в C ...
Во-первых, я думаю, вам может потребоваться включить переадресацию IP.
sysctl -w net.ipv4.ip_forward = 1
чтобы ваша машина стала маршрутизатором. Полная информация о переадресации IP есть Вот.
Во-вторых, я не буду клясться в этом, но ваши правила iptables кажутся мне неправильными. Кажется, вам нужно что-то еще вроде этого:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1044 -j DNAT --to-destination B:22
iptables -A FORWARD -p tcp -d B --dport 22 -j ACCEPT
Возможно, вам не понадобится вторая строка, если ваша политика по умолчанию принимает, тогда возможно только то, что у вас не включена переадресация ip. Однако то, что вы делаете, немного странно, пакеты входят и выходят через один и тот же интерфейс. Я никогда этого не пробовал.
Ваша вторая строка POSTROUTING кажется неправильной или вводящей в заблуждение. Если вам вообще нужна эта линия, вы, вероятно, захотите сузить фильтр до порта с 22 до B.
Кроме того, tcpdump - ваш друг! Используйте tcpdump, чтобы увидеть, действительно ли эти входящие и исходящие пакеты изменяются.