Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@seisonshi

powが使えなくて詰まる(解決編)

More than 5 years have passed since last update.

前回powの設定が良くわからなくポート番号を指定して使ってましたが、
事情によりそれでは駄目だという事でまた調べました。

情報収集

launchctl list | grep -i pow
動いているデーモンの確認

652 -   cx.pow.powd
-   1   cx.pow.firewall

cx.pow.firewall
このデーモンがポートフォワーディングをしてくれるので、
今回の要になる部分です。
cx.pow.powd
こっちのデーモンは無いとpow自体が動かないみたいです。

lsof -i
ポート番号確認

node      652  TCP *:20559 (LISTEN)
node      652  UDP *:20560
node      652  TCP localhost:20559->localhost:49620 (ESTABLISHED)

一応ポートも見てみます。うまく行った時に、
node 652 TCP *:20559 (LISTEN)
ここの表示が変わると思ったのですがそんな事は無かったです。

色々調べながら手当り次第にファイルを書き換えたり戻したり、
powを何度も入れたり消したりする事2時間ほど・・・。

http://d.hatena.ne.jp/passingloop/20110926/reviewing_pow_installation
ここのサイトを参考にcx.pow.firewallの中身が怪しいとようやく気がつきました。

-----自分のcx.pow.firewall-----
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>cx.pow.firewall</string>
        <key>ProgramArguments</key>
        <array>
                <string>/bin/sh</string>
                <string>-c</string>
                <string>
                  sysctl -w net.inet.ip.forwarding=1;
                  echo "rdr pass proto tcp from any to any port {80, 20559} -> 127.0.0.1 port 20559" | pfctl -a "com.apple/250.PowFirewall" -Ef -
                </string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>UserName</key>
        <string>root</string>
</dict>
</plist>
----サイトのcx.pow.firewall----
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>cx.pow.firewall</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>ipfw add fwd 127.0.0.1,20559 tcp from me to me dst-port 80 in &amp;&amp; sysctl -w net.inet.ip.forwarding=1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>

この記事は書かれて数年が経っているので多少違う点はあって当然かと思いますが、
明らかに自分のところでおかしな点が・・・。
echo "rdr pass proto tcp from any to any port {80, 20559} -> 127.0.0.1 port 20559"
port {80, 20559}、ここが怪しいです。
以下に修正。
echo "rdr pass proto tcp from any to any port 80 -> 127.0.0.1 port 20559"

ここを修正したらようやくpowが思うように動いてくれました。
ファイルを見比べると差異が分かるのでとても助かりました。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
seisonshi
駆け出しバイトエンジニア。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?