OS X 10.10でのポート転送


2

OS Xを使用して、すべてのインターネットページをローカルアドレス、つまり127.0.0.1に転送する必要があります。

私は次のコマンドを試しましたが、効果はありません:

echo " rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080 " | sudo pfctl -ef -

上記の行の正確な意味を調査しようとしましたが、良い説明が見つかりません。この転送を実行するにはどうすればよいですか?

編集1

ユーザーがブラウザに「www.google.com」と入力したとします。これはこのような影響を与えるはずです->

ユーザーは127.0.0.1:8080にあるローカルページにリダイレクトされる必要があります

ここで、127.0.0.1:8080に到達すると、ローカルポータルが表示されます。

しかし、「Google.com」からのリダイレクト後に表示されるようにしたい

私は次の声明を書いています。ただし、効果はありません。

rdr pass on lo0 proto {tcp, udp} from any to any port 80 -> 127.0.0.1 port 7894 
pass out log(all) on em0 route-to lo0 inet proto {tcp, udp} from any to any port 80 keep state

私は私の中の線の上に書いていますアンカーファイルおよび追加のアンカーをはpf.conf使用してRDR-アンカーを


2
正確に何を達成しようとしていますか?
テクラフ

pf.conf(5)およびpfctl(8)のマニュアルページを読みましたか?
user3439894

@techraf、特定のページをリダイレクトして、「www.google.com」とローカルページ、つまりローカルのGoogle.comとして提供できる127.0.0.1:8080と言います。すべてのページをローカルポータルにリダイレクトできれば、それも問題あり
ません-PrafulD

1
google.comすぐにhttpsにリダイレクトしてリダイレクトをバイパスします。ポート443にリダイレクトを構成すると、ブラウザーで証明書エラーが発生します。それはあなたが達成しようとしていることですか?
テクラフ

@PrafulDあなたはまだ「一部へ」の部分を理解していません。「任意」とは、全世界のすべての IPアドレスではなく、ローカルマシンのすべてのIPアドレスを意味します。したがって、GoogleのIPアドレス(216.58.201.206など)、「from from to any port 80」のto anyに含まれ ません任意の手段ローカル(宛先/ウェブ)-serverのすべてのIPアドレス(EN0することができる(イーサネット):192.168.0.3/10.12.24.3は、EN1(WIFI):192.168.1.3等)
klanomath

回答:


1

あなたの質問とコメントを正しく理解していれば、あなたは地元のキャプティブポータルのようなものを達成しようとしています。

これはpf単純なリダイレクトではできません。さらに多くのものと構成が含まれます。ここで(github readmeのbsdguides.orgへのリンクが機能しません:正しいリンク)、OpenBSDでこれを行う方法の例を見つけます。そこのソリューションは、特定の状況下でOS Xに適応する場合があります。


ルールrdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080は次のことを行います。

rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
|   |    |              |
|   |    |              #from any IP (all source IPs) to any IP (all destination IPs of the local machine)
|   |    |              from any to any
|   |    #IPv4 Protocol TCP
|   |    inet proto tcp
|   #allow
|   pass
#redirect from port 80 to localhost:8080
rdr                                     port 80 -> 127.0.0.1 port 8080

または:ローカルマシンの任意のIPから任意のIP(任意のインターフェイス上の)へのポート80への(任意のインターフェイス上の)着信rdr着信パケットのみをリダイレクトする)IPv4 TCPトラフィックは、127.0.0.1:8080に渡され、リダイレクトされます。

このルール、google.com:80(216.58.201.206:80)または175.68.9.102:80から127.0.0.1:80へのローカルクライアントマシンからのリクエストをリダイレクトしません。これらのIPはどちらもローカルのIP( www-)serverマシンもローカル(www-)serverもリクエストを認識しません。

これは、受信トラフィックではないため、ローカルマシンの送信トラフィックには適用されません。最初にこのトラフィックをループする必要があります:


pf.anchorファイルに次の2行を追加しましたが、機能 rdr pass on lo0 proto {tcp, udp} from any to any port 80 -> 127.0.0.1 port 7894 pass out log(all) on em0 route-to lo0 inet proto {tcp, udp} from any to any port 80 keep state しません
-PrafulD

@PrafulDコメントの内容を質問に追加し、達成したいことを正確に説明してください。後者はまだ不明です!
クラノマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.