У меня есть службы, работающие на VPS A (1.1. 1.1) на портах 30000-32000.
Я хотел бы, чтобы VPS B (2.2.2.2) перенаправлял их на 20000-22000.
(Вы можете посмотреть ссылку на демонстрационный график ниже, чтобы понять, что Я бы хотел добиться: D)
Я использовал команду ниже для настройки iptables:
iptables -t nat -A PREROUTING -p tcp --dport 20000:22000 -j DNAT --to-destination 1.1.1.1:30000-32000
iptables -t nat -A POSTROUTING -p tcp -d 1.1.1.1 --dport 30000:32000 -j SNAT --to-source 2.2.2.2
20000:22000
iptables -t nat -A PREROUTING -p udp --dport 20000:22000 -j DNAT --to-destination 1.1.1.1:30000-32000
iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 30000:32000 -j SNAT --to-source 2.2.2.2
20000:22000
После некоторых тестов я обнаружил, что кажется, что только порт 20000 перенаправлял исходный порт сервера 30000. Однако другие порты не работают.
Я проверил 4 вещи ниже: 1. Служба VPS A (1.1.1.1) Служба, запущенная на портах 30000 - 32000, полностью функциональна
(то есть net.ipv4.ip_forward = 1
)
(Вы можете посмотреть ссылку на демонстрационный график ниже, чтобы узнать, чего я хотел бы достичь: D)
Все работает хорошо.
Я действительно понятия не имею, как этого добиться. Любая помощь приветствуется! Заранее благодарим!
Вам необходимо изменить правила iptables. Ваше правило DNAT не фильтрует IP-адрес назначения для входящего трафика от пользователей. Правило SNAT не фильтрует IP-адрес источника и диапазон портов источника 30000: 32000 для входящего трафика с сервера A. На сервере B вам потребуется:
iptables -t nat -A PREROUTING -p tcp -d 2.2.2.2 --dport 20000:22000 -j DNAT --to-destination 1.1.1.1:30000-32000
iptables -t nat -A POSTROUTING -p tcp -s 1.1.1.1 --sport 30000:32000 -j SNAT --to-source 2.2.2.2:20000:22000
iptables -t nat -A PREROUTING -p udp -d 2.2.2.2 --dport 20000:22000 -j DNAT --to-destination 1.1.1.1:30000-32000
iptables -t nat -A POSTROUTING -p udp -s 1.1.1.1 --sport 30000:32000 -j SNAT --to-source 2.2.2.2:20000:22000