Транзакции биткойнов при отсутствии правил Accept в iptables

Нормально ли, что сеть работает без какого-либо правила ACCEPT? Потому что теперь мои iptables имеют только порты INPUT DROP, FORWARD DROP и OUTPUT DROP, такие как ssh, http(s), 53, он открыт. Я не добавляю никаких правил для портов 8333 и 9333, но это работает, и если я использую telnet (с помощью этого инструмента http://www.adminkit.net/telnet.aspx ) порт 8333 или 9333, у меня появляется сообщение об ошибке.

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

Добавляю сюда все правила iptables http://notes.io/qZkF

Я попытался отправить BTC из внешнего источника и получил его. В bitcoin.conf у меня есть

рппорт = 9333

Netstat -tulpn

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19626/nginx.conf
tcp        0      0 127.0.0.1:9333          0.0.0.0:*               LISTEN      3537/bitcoind
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2446/sendmail: MTA:
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      19626/nginx.conf
tcp        0      0 0.0.0.0:5565            0.0.0.0:*               LISTEN      2416/sshd
tcp        0      0 0.0.0.0:11111           0.0.0.0:*               LISTEN      8575/php
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2936/mysqld
tcp        0      0 127.0.0.1:587           0.0.0.0:*               LISTEN      2446/sendmail: MTA:
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      2440/memcached
tcp        0      0 0.0.0.0:8333            0.0.0.0:*               LISTEN      3537/bitcoind
tcp6       0      0 ::1:9333                :::*                    LISTEN      3537/bitcoind
tcp6       0      0 :::5565                 :::*                    LISTEN      2416/sshd
tcp6       0      0 :::8333                 :::*                    LISTEN      3537/bitcoind
udp        0      0 127.0.0.1:11211         0.0.0.0:*                           2440/memcached

Последний файл отладки.log

2015-11-22 16:33:33 receive version message: /bitcoinseeder:0.01/: version 60000, blocks=230000, us=[xxxx:xxxx:x:xxxx::]:8333, peer=304
2015-11-22 16:34:01 ERROR: AcceptToMemoryPool: free transaction rejected by rate limiter
2015-11-22 16:34:01 keypool reserve 47
2015-11-22 16:34:01 keypool return 47
2015-11-22 16:34:11 receive version message: /bitcoinseeder:0.01/: version 60000, blocks=350000, us=[xxxx:xxxx:x:xxxx::]:8333, peer=305
2015-11-22 16:34:11 ERROR: AcceptToMemoryPool: free transaction rejected by rate limiter
2015-11-22 16:34:12 ERROR: AcceptToMemoryPool: free transaction rejected by rate limiter
2015-11-22 16:34:31 ERROR: AcceptToMemoryPool: free transaction rejected by rate limiter
2015-11-22 16:34:38 ERROR: AcceptToMemoryPool: free transaction rejected by rate limiter
2015-11-22 16:34:44 ERROR: AcceptToMemoryPool: nonstandard transaction: dust
2015-11-22 16:34:53 receive version message: /bitcoinseeder:0.01/: version 60000, blocks=350000, us=[xxxx:xxxx:x:xxxx::]:8333, peer=306

С PHP я использую это

$server = new jsonRPCClient("http://$user:$passwd@127.0.0.1:9333/");

Обновление: я думаю, это потому, что у меня есть эти правила

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Стоит ли закрывать порты 8333 и 9333?

Если вы пытаетесь запретить людям подключаться к вам, почему бы не использовать listen=0 в bitcoin.conf?
Спасибо за ответ, нет, я не хочу препятствовать подключению, я только что проверил, чтобы УДАЛИТЬ все правила, но я вижу, что это работает, не открывая порт биткойн tcp, я думаю, это потому, что у меня есть УСТАНОВЛЕННОЕ правило, но я не уверен. Каково ваше правило iptables для биткойнов? Мне нужно открыть только TCP-порт (9333) или/и биткойн-порт (8333)?
Установлено означает, что будут разрешены пакеты уже установленного соединения. Это нормально. Первый пакет соединения НЕ будет соответствовать этому правилу, поскольку оно еще не установлено. Сначала это должно быть принято одним из других правил.
Порядок имеет значение? Потому что теперь у меня сначала ESTABLISHED, а после 8333 INPUT OUTPUT ACCEPT

Ответы (1)

Telnet говорит «Сбой подключения», что означает, что другие не смогут подключиться к вам. Ваш iptables работает как надо.

Вы можете ошибаться, думая, что биткойн работает без правила ACCEPT, потому что вы видите исходящие соединения. Наверное 8.

Ваш netstat показывает, что биткойн ПРОСЛУШИВАЕТ, но если iptables не ПРИНИМАЕТ, он никогда не увидит никаких входящих подключений.

Попробуйте netstat -na | grep 8333и вы увидите только исходящие соединения (адрес источника: вы).

Чтобы сделать ваш биткойн-узел доступным для внешнего мира, просто добавьте правило для принятия 8333.

Примечание НЕ открывайте 9333! Он предназначен только для локального использования, и вы можете потерять свои биткойны, если люди получат к нему доступ (на самом деле вам лучше отключить его, если вы им не пользуетесь).

Ах да спасибо вам! В моей предыдущей конфигурации открыты порты 8333 и 9333... спасибо за точность. Теперь я меняю на 2 правилаiptables -t filter -A INPUT -p tcp --dport 8333 -j ACCEPT and iptables -t filter -A OUTPUT -p tcp --dport 8333 -j ACCEPT
Ну, netstat показал, что биткойн все равно слушает только на локальном хосте, поэтому открытый брандмауэр в этом случае не имел значения. Но лучше держать его закрытым. Другие (не по теме) примечания: правила ESTABLISHED обычно используются в качестве (почти) первого правила, так как они будут затронуты большей частью трафика. (обратите внимание, что это изменит значение счетчиков, если вы когда-нибудь взглянете на них.) Еще один момент: DROP вызывает длительные задержки, а затем тайм-аут, который может раздражать или замедлять работу. Специально для OUTPUTвас, возможно, вы захотите использовать DENY вместо этого. Любое приложение, отправляющее на запрещенный порт, немедленно получит сообщение об ошибке.