web-dev-qa-db-ja.com

Linuxでローカルホストのポートを開く方法は?

私は過去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
3
Joey

問題をデバッグするには、おそらく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へのルートと一致しないようにする必要があります。

1
davidgo