私は過去1時間、Ubuntu 12.04でポートを開くことについて読んでいましたが、何も機能しないようです。 IP範囲192.168.*.*
を許可しているローカルホスト(127.0.0.1)でローカル接続を受け入れるRPCサーバーでプログラムを実行しています
着信接続を許可するようにiptablesを編集しようとしましたが、何をしてもcurlはRPCサーバーに接続できません。
$ Sudo iptables -A INPUT -i eth0 -p tcp --dport 18332 -j ACCEPT
$ nmap -v -sT localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-13 05:54 UTC
Initiating Ping Scan at 05:54
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 05:54, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 05:54
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Discovered open port 21/tcp on 127.0.0.1
Discovered open port 3389/tcp on 127.0.0.1
Discovered open port 3306/tcp on 127.0.0.1
Completed Connect Scan at 05:54, 0.05s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00060s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
3389/tcp open ms-term-serv
Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 Host up) scanned in 0.10 seconds
$ Sudo iptables -A INPUT -i eth0 -p tcp --dport 18332 -m state --state NEW,ESTABLISHED -j ACCEPT
$ Sudo iptables -A OUTPUT -o eth0 -p tcp --sport 18332 -m state --state ESTABLISHED -j ACCEPT
$ !nmap
nmap -v -sT localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-13 05:57 UTC
Initiating Ping Scan at 05:57
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 05:57, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 05:57
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 21/tcp on 127.0.0.1
Discovered open port 3306/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 3389/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed Connect Scan at 05:57, 0.05s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00072s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
3389/tcp open ms-term-serv
Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 Host up) scanned in 0.10 seconds
Curlからの出力は次のとおりです。
$ curl --user uname:upass --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:18332/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) couldn't connect to Host
問題をデバッグするには、おそらくiptablesファイアウォールルールのコピーを提供する必要があります-/ sbin/iptables-vnLのようなもので十分です。
最後のルールが「すべてを削除する」であるファイアウォールがあると思います。追加したルールは、このルールの後にテーブルの最後に追加されたため、実行されませんでした。 「Sudoiptables-A」で始まるルールを作成する代わりに、「Sudoiptables-I」を試してルールを先頭に挿入してください。
また、ローカルホストに接続しようとすると、コマンドSudo "iptables -A INPUT -i eth0 -p tcp --dport 18332 -jACCEPT"に欠陥があります。イーサネットデバイスを意味する「-ieth0」を指定しました。ローカルホストは特別な「lo」デバイスを使用します。すべてのインターフェイスで機能するように、「-ieth0」パラメータを省略した方がよい場合があります。
同様の理由で、IP範囲192.168。。を許可したステートメント "(127.0.0.1)"は、192.168。。のように欠陥があります。 )送信元IPアドレスは127.0.0.1にバインドされているインターフェイス「lo」になるため、127.0.0.1へのルートと一致しないようにする必要があります。