web-dev-qa-db-ja.com

iptablesを使用して外部ネットワークがssh経由で内部サーバーに接続できるようにする方法

IPが10.0.0.2/24のファイアウォールがあります。これもデフォルトゲートウェイです。外部ネットワークがIPが10.0.0.1/24のサーバーにSSH接続できるようにする必要があります。 iptablesを使用する必要があり、ファイアウォールにアクセス許可を設定する必要があります。

1
Marvic Grima

他のすべてが整っていると仮定して、ファイアウォールに2つのルールが存在することを確認する必要があります。

  1. 転送ルール:トラフィックを外部から10.0.0.1ポート22に転送できるようにする必要があります。
  2. NATルール:RFC 1918プライベートIPv4ネットワークを使用しているため、ポート22宛てのファイアウォールに到着するパケットの宛先アドレスを変更する必要があります。

繰り返しになりますが、ファイアウォールがWAN行きのトラフィックをマスカレードするように設定されており、IPv4転送が有効になっていて、リターントラフィックを転送できるようになっていると想定しています。

転送が許可されていることを確認するために最初の部分に対処するには:

iptables -I FORWARD -d 10.0.0.1 --p TCP --dport 22 -j ACCEPT

FORWARDチェーンのデフォルトがACCEPT(通常はデフォルト)の場合、このルールは不要な場合があります。

次に、宛先アドレス変換を実行するには:

iptables -t nat -I PREROUTING -p tcp --dport 22 -j DNAT --to 10.0.0.1

どちらの例でも、-Iを使用して、ルールがそれぞれのチェーンの最初に挿入されるようにしました。既存のルールよりも優先されます。これは望ましい場合と望ましくない場合があります。

インターフェイス名を追加することでルールをより具体的にすることができますが、質問で何も指定しませんでした。

また、これらのルールは永続的ではないことに注意してください。システムを再起動すると、それらは消えます。

2
multithr3at3d

以下の権限を使用することで、外部から内部ネットワークにSSH接続することができました。

# nano /etc/sysctl.conf

net.ipv4.ip_forward = 1

# route add -net 10.0.0.0/24 dev ens33
# iptables -t nat -A POSTROUTING ! -d 10.0.0.0/24 -o ens33 -j SNAT --to-source 192.168.1.200
# iptables -A PREROUTING -t nat -i ens38 -p tcp --dport 22 -j DNAT --to 10.0.0.1
# iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 22 -j ACCEPT
0
Marvic Grima