Разрешить только определенный порт, который может быть подключен только по одному IP-адресу одновременно
У меня есть открытый порт 40002, я хочу ограничить, чтобы в то же время порт мог быть подключен только по одному IP-адресу (не конкретному адресу). если к этому порту уже подключен IP-адрес, другие IP-адреса не смогут подключиться.
можно ли это настроить Iptables или скриптами? моя система Ubuntu 14.04 спасибо.
1 ответ
Вы можете сделать это, настроив iptables.
/sbin/iptables -A INPUT -p tcp --syn --dport $port -m connlimit --connlimit-above N -j REJECT --reject-with tcp-reset
# save the changes see iptables-save man page, the following is redhat and friends specific command
service iptables save
Пример: ограничение SSH-соединений на IP / хост
/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
# save the changes see iptables-save man page, the following is redhat and friends specific command
service iptables save
ТЕСТИРОВАНИЕ:
#!/bin/bash
ip="202.1.2.3"
port="80"
for i in {1..100}
do
# do nothing just connect and exit
echo "exit" | nc ${ip} ${port};
done
ОК: для ограничения n соединений max приведу пример использования модуля ip limit:
iptables -A INPUT -p tcp --syn -dport 40002 -m iplimit --iplimit-above 3 -J REJECT
Это будет ОТКЛЮЧИТЬ соединения, если есть 3 подключенных IP-адреса. Извините, если я неправильно понял ваш вопрос;)