Перенаправить весь входящий трафик на мой домашний компьютер через интерфейс Wireguard.
Я настроил сервер в AWS с установленным на нем сервером WireGuard. Я настроил сервер и клиент, и VPN-соединение запущено и работает. Я могу выполнить пинг со своего локального компьютера на адрес сервера (192.168.45.1), а также с моего сервера на домашний компьютер (пинг с сервера на 192.168.45.2). Таким образом, базовое соединение работает наоборот. Работу VPN я подтвердил, маршрутизировав 0.0.0.0 (кроме локальных сетей) через Wireguard VPN, и это работает успешно: IP-проверка показывает IP облака AWS.
Во-вторых, мне нужно иметь возможность получать входящие соединения на моем экземпляре AWS, и их необходимо направить на мой домашний компьютер. Поскольку между сервером и моим домашним компьютером работает туннель Wireguard, он сводится только к пересылке локального трафика ОТ eth0 (основная входящая сетевая карта сервера (которая больше ни для чего не используется)) ДО интерфейса Wireguard (wg0). И поскольку IP-адрес назначения меняется, мне приходится использовать (D)NAT.
Итак, я настроил ядро Linux с помощью sysctl:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Затем я начал настраивать iptables на своем экземпляре AWS, в котором 172.31.5.46 — это IP-адрес eth0 моего сервера AWS, а 192.168.45.2 — IP-адрес моего домашнего компьютера:
# iptables -F
# iptables -t nat -A PREROUTING -p tcp -d 172.31.5.46 --dport 3000 -jDNAT --to-destination 192.168.45.2:3000
# iptables -t nat -A PREROUTING -p tcp -d 172.31.5.46 --dport 22 -jDNAT --to-destination 192.168.45.2:22
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
На моем домашнем компьютере я запускаю инструмент под названием «Простой прослушиватель TCP», который показывает мне, когда к моему компьютеру устанавливаются соединения через определенные порты.
Когда я затем подключаюсь из какой-либо конечной точки в Интернете к общедоступному IP-адресу моего экземпляра AWS, он перенаправляется на мой компьютер, и мой TCP-прослушиватель показывает входящее соединение. Но по какой-то причине он ВСЕГДА поступает на мой домашний компьютер через порт 3000. Таким образом, при указанной выше настройке порт 22 на AWS теперь перенаправляется на порт 3000, а порт 3000 выдает внешнему миру сообщение «Соединение отклонено». Это означает, что мне не хватает чего-то маленького в моей конфигурации или знаниях. Что это за маленький кусочек?