LoginSignup
11
14

More than 3 years have passed since last update.

[iptables]特定ポートへのパケットを別ホストに転送する

Last updated at Posted at 2018-11-16

はじめに

ふとしたことで自宅サーバの特定ポートをさくらVPS経由で公開したい衝動に駆られたので、iptablesで設定してみました。

前提環境

さくらVPS側:Ubuntu16.04(カスタムOS)
自宅サーバ側:debian9(Stretch)

※双方のサーバはVPNで接続されています。

参考サイト

Kerosoft:Modus Operandi『iptablesで特定のポートを別のホストへ転送する方法』
Linux Advanced Routing & Traffic Control HOWTO『MSS クランプによって Path MTU Discovery 問題を回避する』

iptables.rulesの編集

NATテーブル

/etc/iptables/iptables.rules
*nat
# 外からの特定ポートのパケットを自宅サーバに転送
-A PREROUTING -m tcp -p tcp --dst [公開しているIP] --dport [ポート番号] -j DNAT --to-destination [自宅サーバのIP]:[ポート番号]
#自宅サーバ宛パケットの送信元アドレスをさくらVPSのVPN側IPに付け替える。
-A POSTROUTING -m tcp -p tcp --dst [自宅サーバのIP] --dport [ポート番号] -j SNAT --to-source [さくらVPSのVPN側IP]
COMMIT

FILTERテーブル

指定したポートのみ許可しているため、転送するポートの通信を許可する設定をFILTERテーブルに追加する必要がある。

/etc/iptables/iptables.rules
*filter
# NATのPREROUTINGを通って変換されたアドレスに対して許可
-A FORWARD -m tcp -p tcp --dst [自宅サーバのIP] --dport [ポート番号] -j ACCEPT
# 戻りのパケットも許可する。(TCPのフラグで判断)
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# MTUが違うネットワーク間の適切なMSSを計算する(念のため)
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

設定反映

iptables.rulesの編集が終わったら、設定を反映させる。

# iptables-restore < /etc/iptables/iptables.rules
11
14
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
11
14