Torリレーを設定しようとしています。
Torがそれが何であるかを説明する静的なWebページを提示できるようにするために、サーバーがポート80と443でリッスンするようにします。
Torがアカウンティング/ハイバネーション(データ制限に達した後のスロットル帯域幅)を使用できるようにするには、1024を超えるポート番号にバインドするプロセスが必要です(非特権ユーザーが推測するポートを再バインドできるようにするため)。
したがって、私のTor構成は次のようになります。
ORPort 443 NoListen
ORPort 127.0.0.1:9090 NoAdvertise
DirPort 80 NoListen
DirPort 127.0.0.1:9091 NoAdvertise
DirPortFrontPage /etc/tor/tor-exit-notice.html
サーバーを起動した後、htmlファイルのローカルにアクセスできます。
$ wget 127.0.0.1:9091
--2013-08-12 14:27:49-- http://127.0.0.1:9091/
Connecting to 127.0.0.1:9091... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6762 (6.6K) [text/html]
Saving to: `index.html'
100%[=============================>] 6,762 --.-K/s in 0.005s
2013-08-12 14:28:15 (1.21 MB/s) - `index.html' saved [6762/6762]
そして、ポートは正しく開いているようです。
$ Sudo netstat -lnp | grep tor
tcp 0 0 127.0.0.1:9050 0.0.0.0:* LISTEN 6328/tor
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 6328/tor
tcp 0 0 127.0.0.1:9091 0.0.0.0:* LISTEN 6328/tor
0.0.0.0:80の接続が127.0.0.1:9091にリダイレクトされる最後の部分を機能させるために、iptablesを使用してみました。
$ Sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 443 -j DNAT --to-destination 127.0.0.1:9090
$ Sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 127.0.0.1:9091
$ Sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 to:127.0.0.1:9090
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:127.0.0.1:9091
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
しかし、ポート80で外部IPに接続すると、応答がありません。
私はip_forwardをオンとオフの両方で試しましたが、どちらも機能しません:
$ Sudo sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
$ Sudo sysctl net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0
MASQUERADE-ingも試しましたが、機能せず、必要ないと思います。
$ Sudo iptables -t nat -A POSTROUTING -j MASQUERADE
以下の提案に従ってPREROUTINGも試しましたが、機能しません。
$ Sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 127.0.0.1:9091
iptables v1.4.14: REDIRECT: Bad value for "--to-ports" option: "127.0.0.1:9091"
Try `iptables -h' or 'iptables --help' for more information.
私は何が間違っているのですか?
サーバーはRaspberryPiであり、パブリックIPを使用してインターネットに直接接続された組み込みのネットワークインターフェイスのみでwheezyを実行します。
これでうまくいくはずです:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 \
-j REDIRECT --to-ports 127.0.0.1:9091
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 443 \
-j REDIRECT --to-ports 127.0.0.1:9090
カーネルでローカルホストへのルーティングを有効にしてみてください。sysctl -w net.ipv4.conf.eth0.route_localnet=1
いつ eth0
はマシンのNIC)です。
この投稿で受け入れられた回答を参照してください: https://unix.stackexchange.com/questions/111433/iptables-redirect-outside-requests-to-127-0-0-1