Расстраивает ли hash:net,port поддержка 0.0.0.0/0

Расстраивает ли hash:net,port поддержка 0.0.0.0/0

Есть ли способ добавить 0.0.0.0/0 к ipset type hash:net,port? Похоже, он поддерживает только длину префикса от 1 до 32, но что делать, если я хочу, чтобы запись в моем ipset hash поддерживала весь ip-трафик на заданном порту? Например

ipset create testset hash:net,port
ipset add testset 0.0.0.0,22
iptables -I INPUT 1 -m set --match-set testset src, src -j ACCEPT
iptables -I INPUT 2 -j LOG --log-prefix "** FIREWALL **"

ничего не сделает. Трафик SSH попадет на брандмауэр и сгенерирует журнал. 0.0.0.0/0 не принимается как допустимая нотация CIDR, хотя, кажется, они добавили ее в hash:net,iface в ревизии 2. Я знаю, что могу сохранить порт в bitmap:port и применить его к его собственному правилу iptables. Однако я специально хотел бы сохранить порты в хэше, поскольку некоторые порты могут заботиться об IP-адресе src, а другие — нет, и я не хочу поддерживать отдельный набор для 0.0.0.0/0.

решение1

Правильным синтаксисом было бы использовать 0.0.0.0/0, поскольку 0.0.0.0 по умолчанию равно 0.0.0.0/32. Увы, как вы обнаружили, это не поддерживается:

# ipset add testset 0.0.0.0/0,22
ipset v7.3: The value of the CIDR parameter of the IP address is invalid

Вместо этого вы можете использовать тот же трюк, который используется в OpenVPN при переопределении маршрутов: разделить 0.0.0.0/0 пополам: 0.0.0.0/1 и 128.0.0.0/1:

ipset add testset 0.0.0.0/1,22
ipset add testset 128.0.0.0/1,22

Примечание:

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

iptables -I INPUT 1 -m set --match-set testset src,dst -j ACCEPT

Так как мы находимся вВХОДцепь, значениеполучение, src,dstозначает проверку удаленного (исходного) IP и локального (целевого) порта, в то время как src,srcбудет означать проверку удаленного (исходного) IP и удаленного (исходного) порта. Единственным использованием этого будет разрешение ответного трафика от удаленных серверов ssh, но это обычно уже обрабатывается в -m conntrack --ctstate ESTABLISHEDдругом месте.

Связанный контент