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

Соединения NAT TCP / UDP с iptables на AWS

Итак, у меня есть 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, чтобы увидеть, действительно ли эти входящие и исходящие пакеты изменяются.