Iptables блокирует доступ к порту 8000, за исключением IP-адреса

Я никогда не использовал iptables, и документация в Интернете кажется немного непрозрачной.

Я хотел бы заблокировать все запросы к порту 8000 на моем сервере, кроме тех, которые поступают с определенного IP-адреса. Как это сделать с помощью iptables?

Ответ 1

Этот вопрос должен быть на Ошибка сервера. Тем не менее, следующее должно сделать трюк, предполагая, что вы говорите о TCP, а IP, который вы хотите разрешить, - это 1.2.3.4:

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP

Ответ 2

Другой вариант:

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP

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

Изменить **

Согласно комментарию Фернандо и ссылка восклицательный знак (!) будет помещаться перед параметром -s:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP

Ответ 3

Вы всегда можете использовать iptables для удаления правил. Если у вас много правил, просто выведите их с помощью следующей команды.

iptables-save > myfile

vi, чтобы редактировать их из строки комментариев. Просто используйте "dd", чтобы удалить ненужные строки.

iptables-restore < myfile and you're good to go.  

ПОМНИТЕ, ЧТО ЕСЛИ ВЫ НЕ НАСТРОИЛИ СВОЮ ОС ДЛЯ СОХРАНЕНИЯ ПРАВИЛ В ФАЙЛЕ И ЗАГРУЖАЙТЕ ФАЙЛ ВО ВРЕМЯ ЗАГРУЗКИ, ЧТО ВАШИ ПРАВИЛА БУДУТ УТРАТЫ.