2

У меня есть топология сети:

[C1] - [R1] - [R2] - [C2]

Сеть C1-R1 - 192.168.100.0/24
Сеть R1-R2 - 10.9.8.0/30
Сеть R2-C2 - 192.168.200.0/24

Мне нужно сделать так, чтобы C2 мог соединяться с C1, применяя некоторые правила iptables к R2. В то же время я не хочу, чтобы C1 подключался к C2. Я пытался придумать некоторые правила цепочки FORWARD, но я просто не могу заставить его работать.

Есть ли простой способ заставить его работать?


Вот что говорит iptables -L -v:

Цепной INPUT (политика DROP 5 пакетов, 372 байта)
pkts bytes target prot opt in out source source

Цепочка FORWARD (политика DROP 4 пакета, 240 байт)
pkts bytes target prot opt in out source source

5 420 ОТКЛОНИТЬ все - любые enp0s3 где угодно и где угодно
состояние НОВОЕ отклонение с ICMP-портом-недостижимым

Цепной ВЫХОД (политика DROP 5 пакетов, 560 байт)
pkts bytes target prot opt in out source source

1 ответ1

1

Попробуйте состояние или модуль conntrack.

iptables -A FORWARD -o $IFACE -m state --state NEW -j REJECT

где $IFACE - это интерфейс на R2, который соединяет его с C2.

Таким образом, пакеты от C1, которые установят новое соединение, отклоняются. Пакеты от C2 до C1 не затрагиваются этим правилом.

РЕДАКТИРОВАТЬ: Так как ваша цепочка FORWARD имеет политику DROP, вам также понадобятся правила, которые позволяют пакетам идти в противоположном направлении, например:

iptables -A FORWARD -i $IFACE -j ACCEPT
iptables -A FORWARD -o $IFACE -m state ! --state NEW -j ACCEPT

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .