LoginSignup
3
1

More than 3 years have passed since last update.

ポートフォワードをしないでiptablesのNATテーブルに設定をしてみた

Last updated at Posted at 2020-05-21
  • 環境
    • Amazon Linux AMI release 2017.09
    • iptables v1.4.18

プライベートIPアドレスとパブリックIPアドレスを組合せで変換してくれるNATテーブルに設定を入れる。
そうすれば、毎回ポートフォワードしなくてすむ。
2020-05-15 18.21.30.jpg

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  ]
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1