Я пытаюсь перенаправить TCP-соединения порта несколько раз на другие порты, я пробовал это раньше, но не работал:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 60000 -j REDIRECT --to-port 60001
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 60001 -j REDIRECT --to-port 60002
Я пытаюсь получить порт 6000 для перенаправления tcp-соединений на порт 60001, тогда порт 60001 перенаправит соединение на порт 60002.
X -> Y -> Z
что мне делать?
Ваш шаг по смягчению последствий должен перенаправить соединение на ваш игровой сервер, вы не можете сделать это с помощью IPTables.
Вы не можете дважды сопоставить один и тот же пакет с разными правилами DNAT. Но вы можете сделать всю структуру более сложной и, следовательно, более гибкой.
Вы можете создать цепочку для каждого порта назначения, который хотите обработать:
iptables -t nat -N port60000
iptables -t nat -N port60001
Если вы сопоставляете пакет, вы отправляете его не в цель DNAT, а в соответствующую цепочку:
iptables -t nat -A PREROUTING -p tcp --dport 60000 -j port60000
iptables -t nat -A PREROUTING -p tcp --dport 60001 -j port60001
В исходном состоянии цепочки делают то же самое, что и старые команды, только немного медленнее ...
iptables -t nat -A port60000 -p tcp -j DNAT --to-destination :60001
iptables -t nat -A port60001 -p tcp -j DNAT --to-destination :60002
Если вы хотите изменить 60000 => 60001
к 60000 => 60002
тогда вы можете изменить содержание port60000
:
iptables -t nat -A port60000 -p tcp -j port60001
iptables -t nat -D port60000 -p tcp -j DNAT --to-destination :60001
Но то, что это возможно, не означает, что это лучше, чем воссоздание правил после изменения.