- 環境
- Amazon Linux AMI release 2017.09
- iptables v1.4.18
プライベートIPアドレスとパブリックIPアドレスを組合せで変換してくれるNATテーブルに設定を入れる。
そうすれば、毎回ポートフォワードしなくてすむ。
iptablesの記述方法
参考 : iptables まとめ - Qiita
DNAT
インターネットからLAN内にアクセスする時に送信先のパブリックIPアドレスをプライベートIPアドレスに変換してくれるのがデスティネーションNAT
iptables
-A PREROUTING -p tcp -m tcp --dport {経由地のポート} -j DNAT --to-destination {目的地のプライベートIP}:{目的地のポート}
DNATの記述方法
LAN内からインターネットへ出ていく時に送信元のプライベートIPアドレスをパブリックIPアドレスに変換してくれるのがソースNAT
iptables
-A POSTROUTING -d {目的地のプライベートIP}/32 -p tcp -m tcp --dport {目的地のポート} -j SNAT --to-source {経由地のプライベートIP}
iptablesのNATテーブルに設定する
サーバ | パブリックIP | プライベートIP | 使うポート番号 |
---|---|---|---|
経由地 | 12.34.56.78 | 10.0.0.10 | 28090 |
目的地 | なし | 10.0.0.20 | 8090 |
こんな状態の場合、以下のような設定をすれば目的地サーバに「12.34.56.78:28090」でアクセスできる。
# 1. 設定しようと思っているポート番号が使われていないか確認する
$ sudo cat /etc/sysconfig/iptables | grep 28090
# 2. iptablesのNATテーブルに設定する
$ sudo vi /etc/sysconfig/iptables
$ sudo cat /etc/sysconfig/iptables
#...省略..
*nat
-A PREROUTING -p tcp -m tcp --dport 28090 -j DNAT --to-destination 10.0.0.20:8090
-A POSTROUTING -d 10.0.0.20/32 -p tcp -m tcp --dport 8090 -j SNAT --to-source 10.0.0.10
COMMIT
#...省略..
# 3. iptablesを再起動する
$ sudo service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter nat [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]