事始め
openVPN + nginxを使うことでhttpリクエストをリバースプロキシして自宅ネットワークから配信することはできるようになった。 しかしこれあくまでもL7レイヤーの話であり、http以外は無理だという話だ。 例えば、kafkaのトピックにデータを登録するにはhttpではなく独自のプロトコルを使う必要がある。つまり、nginxではだめだということ。 どうするかというと、L3レイヤーでトラフィックの宛先を変えてあげる必要がある。
関連
iptalbesを使ってポートフォワーディングする方法
# 10001番ポートのトラフィックを 100.64.1.61:10001 に転送
iptables -t nat -A PREROUTING -p tcp --dport 10001 -j DNAT --to-destination 100.64.1.61:10001
# フォワードを許可
iptables -A FORWARD -p tcp -d 100.64.1.61 --dport 10001 -j ACCEPT
# 外部に返すためのMASQUERADE(オプション)
iptables -t nat -A POSTROUTING -d 100.64.1.61 -p tcp --dport 10001 -j MASQUERADE
という感じですね。
今更だけどopenvpnがフリーソフトなのって普通にやばい こちら