LINUX.ORG.RU

Как средствами nftables заблокировать forward с условием

 


0

1

Как запретить трафик с определенного адреса в транзитной цепочке?

  chain forward {
    type filter hook forward priority 0
    policy drop
    ct state related,established accept
    iifname eth0 oifname tun0 accept
    iifname tun0 oifname eth0 accept
    ip saddr 10.0.0.2/32 ip daddr 10.0.0.3/32 drop
  }

Так не работает. Куда последнее правильно не перемещай, трафик все равно идет.


У вас логика нарушается, по умолчанию у ваc политика drop и после этого вы зачем-то разрешаете форвард по интерфейсам и тут же что-то дропаете в куче.

Я бы сделал так, удалил:

iifname eth0 oifname tun0 accept
iifname tun0 oifname eth0 accept

и добавил бы правило для vpn:

ip saddr ip/mask iifname tun0 accept

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

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 4)
Ответ на: комментарий от vvn_black

У вас логика нарушается, по умолчанию у ваc политика drop и после этого вы зачем-то разрешаете форвард по интерфейсам.

Не совсем понял, почему. У меня фактически политика белых списков. Сначала все запрещаю, а потом разрешаю нужное. Кроме этих двух интерфейсов, есть еще 3, я их убрал из правил, чтобы лишнего не было.

и добавил бы правило для vpn:

Тоже не понял, как это решает проблему с запретом транзита для определенного адреса.

Kharjo
() автор топика
Ответ на: комментарий от Kharjo

У меня фактически политика белых списков. Сначала все запрещаю, а потом разрешаю нужное.

Какие же это белые списки, если по умолчанию все запрещено, а потом разрешено не только нужное, а все.

не понял, как это решает проблему с запретом транзита для определенного адреса

Так разрешите только для других адресов.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от vvn_black

Какие же это белые списки, если разрешено не нужное, а все.

А police drop? Это же базовое правило, то есть дефолт. Все запрещено. А дальше разрешаю. Я ошибаюсь?

Вот пробую, как вы советуете:

  chain forward {
    type filter hook forward priority 0
    policy accept
    ip saddr 10.0.0.3/32 ip daddr != 10.0.0.3/32 drop
    ct state related,established accept
    iifname eth0 oifname tun0 accept
    iifname tun0 oifname eth0 accept
}

Так не работает ничего на клиенте, почему то…

Kharjo
() автор топика
Ответ на: комментарий от Kharjo

Вот пробую, как вы советуете:

Я такого не советовал.

Мой совет:

  chain forward {
    type filter hook forward priority 0; policy drop;

    ct state established,related accept
    ct state invalid drop

    # разрешаете форвард vpn
    # или пишете здесь несколько правил с диапазоном, чтобы исключить ненужный адрес
    ip saddr xx.xx.xx.0/24 iifname tun0  accept
    ...
  }

И общий подход, чтобы не запутаться, если политика drop то дальше только разрешаете, если accept то дальше только дропаете.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Понял, спасибо. Еще одно уточнение. Задавать нужно именно диапазоном. Так не выйдет?

  chain forward {
    type filter hook forward priority 0; policy drop;

    ct state established,related accept
    ...
    ip saddr != 10.0.0.2/32 oifname tun0 accept
    ip saddr 10.0.0.2/32 ip daddr 10.0.0.3/32 accept
  }

Точнее так - так не выйдет. Попробовал. У 0.2 нет доступа вообще в таком случае, в том числе к 0.3.

Kharjo
() автор топика
Ответ на: комментарий от Kharjo

И так тоже не работает…

  chain forward {
    type filter hook forward priority 0; policy drop;

    ct state established,related accept
    ...
    ip saddr { 10.0.0.1, 10.0.0.3-10.0.0.255 } oifname tun0 accept
    ip saddr 10.0.0.2/32 ip daddr 10.0.0.3/32 accept
  }
Kharjo
() автор топика
Ответ на: комментарий от vvn_black

Мне нужно, чтобы у пира 10.0.0.2 среди всех интерфейсов и адресов, доступ к которым осуществляется через сервер, где я настраиваю nftables, был доступ только к 10.0.0.3 и только к нему. В части транзита, разумеется. Входящих это не касается.

Kharjo
() автор топика
Ответ на: комментарий от Meyer

Убрал маску, спасибо. Но на работоспособность это не повлияло.

Kharjo
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.