Я исправил это с помощью этой команды:
Чтобы открыть порты, мне пришлось:
1 -Установите в панели управления NAS правило брандмауэра, чтобы порт 5432 был открыт.
2 -Изменить 2 файла :pg _hba.conf и postgresql.conf
Для этого мне пришлось:
sudo -u postgres psql
и запустить команду:SHOW hba_file;
sudo vi /etc/postgresql/pg_hba.conf
:q -выйти, если не было сделано никаких изменений :Вопрос! -выйти и уничтожить все сделанные изменения :wq -записать изменения (сохранить )и выйти :x -аналогично :wq, только записать файл, если были внесены изменения, затем выйти
3 -перезапустите службу postgres или перезапустите NAS
4 -проверьте с помощью команды nmap, открыт ли порт теперь:nmap -p5432 IP_ADDRESS_SERVER
(с другого хоста, указывающего на ваш NAS/сервер, где вы запускаете postgre)
5 -проверьте статус службы командой :service postgresql status
У вас две проблемы:
использование слишком старой версии nftables.
Я смог воспроизвести ошибку Error: syntax error, unexpected saddr, expecting comma or '}'
, используя nftables версии 0.7 (, обнаруженную в Debian 9 ). Meters (nftables wiki)предлагает nftables >= 0.8.1 и ядро >= 4.3.
Обновление nftables . Например, в Debian 9, используяstretch -backports(stretch -backports , а не buster -backports)версию 0.9.0-1~bpo9+1
. искать как это сделать на других дистрибутивах.
использование неправильной таблицы, как сообщает команда (при использовании nftables 0.9.2):
# nft add rule ip filter input tcp dport @rate_limit meter syn4-meter \{ ip saddr. tcp dport timeout 5m limit rate 20/minute \} counter accept
Error: No such file or directory; did you mean set ‘rate_limit’ in table inet ‘filter’?
Действительно, многие объекты являются локальными по отношению к таблице, в которой они объявлены. Таким образом, вы не можете объявить его в «пространстве имен» inet filter и использовать его в «пространстве имен» ip filter . В этом отличие, например, от iptables
+ ipset
, где один и тот же ipset набор может использоваться в любой таблице.
Это сработает (как только вы получите достаточно свежие nftables):
nft add rule inet filter input tcp dport @rate_limit meter syn4-meter \{ ip saddr. tcp dport timeout 5m limit rate 20/minute \} counter accept
В качестве альтернативы можно вернуть определение счетчика в таблицу IP-фильтра .