Macでポートフォワード

今回のケースでいうと、Kubernetes内のPodにローカルからJMXにつないでjvisualvmを使ってチューニングすることが多かったのだが、下記の記事でやったように127.0.0.1のホスト指定が使えないケースが出てきてしまった。

road288.hatenablog.com

-Djava.rmi.server.hostname=127.0.0.1の設定を抜いてしまうと、そのままではつなぐことができなくなってしまう。というのは、Kubernetesのport-fowardコマンドは、127.0.0.1にBindする仕様のため(2017/12/14時点)。

github.com

Pull Requestも上がっているが、マージできない状況になってしまっている。

github.com

なんとかならないかと考えていたら、ポートフォワードすることによって解決できた。

github.com

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

上記の設定は、7000番ポートにきたパケットを全て127.0.0.1:7000に送る。

ᐅ sudo pfctl -s nat                                                                             (yamada/default)
No ALTQ support in kernel
ALTQ related functions disabled
rdr pass inet proto tcp from any to any port = 7900 -> 127.0.0.1 port 7900

これによって、kubectl port-forwardでした際に、これまで通りjvisualvmにつなぐことができた。

元に戻すときは、

sudo pfctl -F all -f /etc/pf.conf

参考:

PFCTL(8) - Maintenance Commands - YOS OPENSONAR

Mac pfctl Port Forwarding | Sal Ferrarello