Как я могу отключить перенаправление трафика только для одного порта в iptables?

Как исключить определенный порт из списка перенаправления трафика через iptables? Как исключить диапазон IP-адресов, перечисленный в отдельной таблице, от перенаправления трафика?
  • 2 ноября 2023 г. 8:27
Ответы на вопрос 2
Чтобы исключить перенаправление трафика для конкретного порта в iptables, вы можете добавить правило в таблицу `nat`, используя цепочку `PREROUTING`.

1. Откройте терминал и выполните следующую команду для добавления правила:
```
sudo iptables -t nat -A PREROUTING -p tcp --dport <порт> -j ACCEPT
```
`<порт>` здесь должен быть заменен на номер порта, который вы хотите исключить.

2. Затем, чтобы перенаправить остальной трафик, добавьте правило для перенаправления портов по умолчанию:
```
sudo iptables -t nat -A PREROUTING -p tcp --dport <порт> -j REDIRECT --to-port <номер_порта>
```
`<номер_порта>` здесь должен быть заменен на номер порта, на который вы хотите перенаправлять остальной трафик.

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

Чтобы исключить диапазон IP-адресов от перенаправления трафика, вы можете использовать правило с опцией `-s` для указания диапазона IP-адресов, которые необходимо исключить.

1. Откройте терминал и выполните следующую команду для добавления правила:
```
sudo iptables -t nat -A PREROUTING -s <диапазон_IP> -j ACCEPT
```
`<диапазон_IP>` здесь должен быть заменен на диапазон IP-адресов, который вы хотите исключить.

2. Затем, чтобы перенаправить остальной трафик, добавьте правило для перенаправления портов по умолчанию:
```
sudo iptables -t nat -A PREROUTING -j REDIRECT --to-port <номер_порта>
```
`<номер_порта>` здесь должен быть заменен на номер порта, на который вы хотите перенаправлять остальной трафик.

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

```bash
! -s  -j ACCEPT
```

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

```bash
! -dport 22
```

Таким образом, эта команда позволяет исключить перенаправление трафика для всех IP-адресов, которые не направляются на порт 22.

Для каждого исключённого IP-адреса в таблице, вы можете создать правило ACCEPT или REJECT и выполнить DNAT после прохода таблицы.
Похожие вопросы