Как перенаправить входящий трафик с порта A на порт B и разрешить трафик localhost на порт B, но не входящий?

Но после увеличения (уменьшения) значения с 10 до 1:

sftp -oServerAliveInterval=1 server-2

Установка ServerAliveInterval на 1 секунда запускает таймер после каждого чтения, и если других данных нет, он запрашивает у сервера ответ. Если определенное количество ответов не вернется ( ServerAliveCountMax также важен в этом контексте), то соединение закрывается.

Это также связано с TCPKeepAlive , который в основном делает то же самое без особых усилий. Вышеупомянутые параметры следует использовать только в том случае, если TCPKeepAlive не работает и вы видите частые разрывы соединения.

Упоминание в вашем вопросе , почему вы это сделали, тоже поможет.

0
01.12.2019, 23:04
1 ответ

Если я хорошо понял все ваши требования, делайте так:

# assuming your network interface is named `eth1` as per your OP example

iptables -t raw -A PREROUTING -i eth1 -p tcp --dport 3306 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to-port 3306

Первая команда запрещает соединения, входящие от eth1к tcp-порту 3306.

Вторая команда перенаправляет любое входящее соединение, направленное на локальный порт 12345, на локальный порт 3306.

Если у вас есть несколько интерфейсов с именами вроде eth0, eth1, eth2и т. д., и вы хотите заблокировать их все, вы можете получить это, просто указавeth+(обратите внимание на знак плюс )в первой команде выше, в противном случае, чтобы выборочно заблокировать только определенные интерфейсы, вам нужно будет использовать эту первую команду один раз для каждого интерфейса, который нужно заблокировать.

Приведенные выше две команды необходимы для достижения запрошенного поведения, и их может быть достаточно в зависимости от ваших общих потребностей.


Тем не менее, для более стабильной работы я бы посоветовал дополнительную дополнительную конфигурацию:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 12345 -j REDIRECT --to-port 3306

Это перенаправляет локально соединения с локального порта 12345 на локальный порт 3306, так что вы можете подключиться к вашему mysql через порт 12345 с той же локальной машины.


Наконец, как важная сторона -примечание , имейте в виду, что -Aопция iptablesкоманды добавляет правила к уже существующим,которые, таким образом, имеют приоритет перед добавленными новыми, тем самым мешая им.

Поэтому, если вы поэкспериментируете с любой командой iptables, вам может понадобиться очистить задействованные таблицы в какой-то момент, и вы можете сделать это с помощью опции -F, например:

iptables -t raw -F PREROUTING
iptables -t nat -F PREROUTING

# and possibly also
iptables -t nat -F OUTPUT
# if you also used the additional advised commmand

С другой стороны, также имейте в виду, что эти команды очищают все правила, присутствующие в этих таблицах, включая те, которые могли быть там из-за других установленных брандмауэров. Есть более тонкие команды для выборочного удаления определенных правил, но они зависят от вашей общей настройки iptables, если она очень сложна, помимо двух простых правил, показанных здесь.

Таким образом, вы всегда должны сначала посмотреть, какова ваша первоначальная конфигурация, и вы можете сделать это с помощью опции -Liptables, т.е. вот так:

iptables -t raw -nL PREROUTING
iptables -t nat -nL PREROUTING

# and possibly also
iptables -t nat -nL OUTPUT
# if you also used the additional advised commmand

Конечно, вы можете использовать их в любое время, чтобы видеть текущее состояние ваших таблиц по мере добавления правил. Затем вы можете добавить параметр v(как в -nvL), чтобы видеть счетчики для правил, когда они соответствуют (или не соответствуют )сетевому трафику с течением времени.

5
28.01.2020, 02:22

Теги

Похожие вопросы