質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

3634閲覧

amazonlinuxからローカル環境にポートフォワーディングするにはiptableを弄るだけでいいのでしょうか?Route53等も弄る必要はありますか?

qaz3330

総合スコア113

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2016/12/26 13:53

ポートフォワーディングをすべく次のような記事などをみておりました。
http://qiita.com/tukiyo3/items/94eda73b951d23b214c3

やりたいこと

特定のURLに対してアクセスが来たときに、local環境の指定のパスに飛ばしたいです。

連携先の会社から、GETで、コールバックがくるような連携を行っており、そのデバッグをローカルでおこないたいです。
※ POSTは非対応。
※ ngrokのようなサービスの場合、URLが毎回変わるため不採用
※ localhost:8080/hook が飛ばしたいフォワード先のURLです。
54.22.211/path/to/hook => localhost:8080/hook

分からない点

  • 特定の会社のみといえど、IPアドレス丸出しで渡さない方がいいでしょうか?
  • iptable以外にもRoute53などの設定なども変更しなくてはいけないのでしょうか?

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ポートフォワードは、例えば以下の構成のように、Internet と内部Webサーバーとの間のルーターでパケットを転送することで、Internet から直接アクセスできない内部Webサーバーを公開するといった用途に利用する技術です。

TCP, UDP レベルの処理ですので、上位のプロトコルには関与しません(HTTP, HTTPS でも SMTP でも)。
ポート番号の変換はできますが、URL のパスを変換することはできません。

(ポートフォワード例) Internet --> [(AAA.BBB.CCC.DDD) Router (.1)] ---------------> [(.70) local web] (192.168.1.0/24) AAA.BBB.CCC.DDD:80 ---(port forward)--> 192.168.1.70:8080 Internel から URL http://AAA.BBB.CCC.DDD:80/hook/ でアクセスすると、 http://192.168.1.100:8080/hook/ のコンテンツを参照できる。

AWS, Amazon EC2 のタグが付いているということは、グローバルアドレスを持った EC2インスタンスへのアクセスを、内部Webサーバーの 8080 番ポートに転送+パス変換したいということでしょうか。

Internet --> [EC2] --> [(AAA.BBB.CCC.DDD) Router (.1)] ---------------> [(.70) local web] (192.168.1.0/24)

もし、そうだとすると、

###A. ポートフォワード+リバースプロキシー
(A-1) ルーターでポートフォワード: AAA.BBB.CCC.DDD:12345 --> 192.168.1.70:8080
(A-2) EC2インスタンスでリバースプロキシー: /path/to/hook/ --> http://AAA.BBB.CCC.DDD:12345/hook/

とする方法が考えられます。
12345 は任意のポート番号。

###B. SSHリモートフォワード+リバースプロキシー
(A-1) の代わりに、SSHリモートフォワードを使うこともできると思います。

(B-1) 内部Webサーバーから SSHリモートフォワード: (EC2の)localhost:12345 --> (内部Webの)localhost:8080

SSHリモートフォワードコマンド: $ ssh -f -N -R 12345:localhost:8080 ec2-user@EC2

(B-2) EC2インスタンスでリバースプロキシー: /path/to/hook/ --> http://localhost:12345/hook/

投稿2016/12/26 15:59

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qaz3330

2017/01/01 12:30

ご回答ありがとうございます。 ご教示頂いたsshリモートフォワードの方法で試してみました。 今回はグローバルIPをもつEC2のインスタンスで、アクセス元は、外部会社(同じネットワーク内にいない)状況にあります。 私の理解が間違っていたらすみまませんが sshリモートフォワードで、自分がEC2インスタンスの中に入り、その中で、curl localhost:1234 とすると、ローカル環境のlocalhost:8080にリダイレクトしてくれました。 ただ、今回やりたいことは、自宅のネットワーク外の人からのアクセスをlocalhost:8080にリダイレクトさせたいです。(webhookのテストとして使用) Public IPの12345ポートに対して、アクセスが来たときに、ローカルにリダイレクトさせたく、 今回のようにsshポートフォワーディングしたあとに、Public IPの12345ポートに対してリクエストを送ってもダメでした。。。
TaichiYanagiya

2017/01/01 15:51

パスを変換するのであれば、(B-2) のリバースプロキシーが必要です。Apache httpd, nginx などで。 パスを変換しないのであれば、SSHリモートフォワードで Listen する IPアドレスを 127.0.0.1 (default)→0.0.0.0 にすれば、外部から public IP:12345 でアクセスできます。 ただし、EC2 インスタンス側の /etc/ssh/sshd_config で「GatewayPorts yes」と設定しておく必要があります。 ssh -f -N -R 0.0.0.0:12345:localhost:8080 ec2-user@EC2 なお、外部に公開するのであれば、無条件に公開するのではなく、EC2 のセキュリティグループなどで接続元を制限しておいた方がいいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問