サーバ内の任意のポートへのアクセスはSSHトンネルでも出来ますが、毎回SSH接続しなければならないのは面倒と言う事で、CentOSにstoneをインストールしてみました。
stoneはTCP/UDPのリピーターです。指定したサーバへ中継してくれます。
コンパイルして1ファイルで動かせる手軽さが良いですね。
stoneインストール
# cd /usr/local/src # wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz # tar zxvf stone-2.3e.tar.gz # cd stone-2.3d-2.3.2.7 # vi Makefile
linux: $(MAKE) FLAGS="-O -Wall -DCPP='\"/usr/bin/cpp -traditional\"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -D_GNU_SOURCE $(FLAGS)" LIBS="-lpthread $(LIBS)" stone ↑makeに失敗するので、「-D_GNU_SOURCE」を追加します。
# make linux ↑linux-sslだとmakeに失敗するので、linuxにしました。 ※エラーが出なければOK # mv stone /usr/bin/ # ln -s /usr/bin/stone /usr/local/bin/stone # cd .. # rm -fr stone-2.3d-2.3.2.7
stone起動
今回はTCP80/443に来たリクエストを同じネットワーク内の192.168.x.xに同じポートで流す事にしました。
ApacheのProxyPassでも同じような事は出来ますが、スマートじゃない気がしたので、stoneを採用しました。
iptables等でポート制限している場合は解除してください。
# stone 192.168.x.x:80 80 & # stone 192.168.x.x:443 443 &
stone自動起動設定
再起動しても自動起動するようにrc.localに追加しておきます。
# cd /etc # cp -a rc.local rc.local,201311 # vi rc.local
/usr/bin/stone 192.168.x.x:80 80 & /usr/bin/stone 192.168.x.x:443 443 &