事始め

openVPN + nginxを使うことでhttpリクエストをリバースプロキシして自宅ネットワークから配信することはできるようになった。 しかしこれあくまでもL7レイヤーの話であり、http以外は無理だという話だ。 例えば、kafkaのトピックにデータを登録するにはhttpではなく独自のプロトコルを使う必要がある。つまり、nginxではだめだということ。 どうするかというと、L3レイヤーでトラフィックの宛先を変えてあげる必要がある。

関連

ovpnを使ってsite2site routing

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がフリーソフトなのって普通にやばい こちら