Open-Meshでポート転送にiptablesを使用する

Open-Meshでポート転送にiptablesを使用する

Open-Meshに慣れていない人のための簡単な概要を紹介します。

このシステムは、小型の無線アクセスポイントを使用して独自のメッシュネットワークを自動的に構築します。アクセスポイントの1つが有線LANを介してインターネットに接続されている場合(そのアクセスポイントを「ゲートウェイ」に設定)、すべてのアクセスポイント(および対応するワイヤレスクライアント)がインターネットにアクセスできます。

アクセスポイントはOpenWRTの修正バージョンを実行します。

通常、ワイヤレスアクセスポイント(ノード)にSSHで接続する唯一の方法は、まずゲートウェイにSSHで接続することです。それからここでは、SSHを介してノードに接続します。

私がやろうとしていること:各ワイヤレスノードにSSHポートを直接開いて転送します。

たとえば、私のゲートウェイは10.45.13.220私のLANにあります。最初の無線ノードは5.12.252.248メッシュネットワークにあります。つまり、ゲートウェイにログインしたときに入力すると、ワイヤレスノードのシェルが開きます。次のようにワイヤレスノードにログインできるようにしたいです。ssh [email protected]

$ ssh -p 11001 [email protected]

iptablesだから私は以下を使ってポート転送を試しました。

$ iptables -t nat -A PREROUTING -p tcp -d 10.45.13.220 --dport 11001 \
          -j DNAT --to-destination 5.12.252.248:22

$ iptables -t filter -A FORWARD -p tcp -d 5.12.252.248 --dport 22 -j ACCEPT`

私はこれが行われていることを知っています。これは、上記のコマンドを入力する前に10.45.13.220:11001(ネットワーク上の他のコンピュータで)SSH経由で接続しようとすると、接続が拒否されるためです。しかし、コマンドが入力されると、接続がタイムアウトしました。

私が間違っていることを知っていますか?私はこれについて非常に新しいものですが、iptablesこれは非常に簡単なはずです。

メモ:IP転送が有効になっています。

編集:結果の履歴

@slmが提案した2つのルールのロギングを設定した後、dmesg別のLinuxボックスで10.45.13.220:11001に接続しようとすると、次のことが発生します。

[1015021.850000] IN=br-lan1 OUT= MAC=ac:86:74:0c:fd:00:6c:62:6d:12:85:9d:08:00 \
SRC=10.45.13.246 DST=10.45.13.220 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=16916 DF \
PROTO=TCP SPT=41908 DPT=11001 WINDOW=14600 RES=0x00 SYN URGP=0

[1015021.850000] IN=br-lan1 OUT=br-lan1 MAC=ac:86:74:0c:fd:00:6c:62:6d:12:85:9d:08:00 \
SRC=10.45.13.246 DST=5.12.252.248 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=16916 DF \
PROTO=TCP SPT=41908 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0

[1015022.850000] IN=br-lan1 OUT=br-lan1 MAC=ac:86:74:0c:fd:00:6c:62:6d:12:85:9d:08:00 \
RC=10.45.13.246 DST=5.12.252.248 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=16917 DF \
PROTO=TCP SPT=41908 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0

@slmが提案したように、新しいiptablesルールを使用します。

iptables -t nat -A PREROUTING -p tcp --dport 11001 -j LOG --log-level debug
iptables -t nat -A PREROUTING -p tcp --dport 11001 -j DNAT --to 5.12.252.248:22
iptables -A FORWARD -i br-lan1 -p tcp -j LOG --log-level debug
iptables -A FORWARD -i br-lan1 -o bat0.2@bat0 -p tcp -d 5.12.252.248 --dport 22 \
    -j ACCEPT

ベストアンサー1

には必要ありませんssh。次のように、あるホストから別のホストにSSH経由で接続できます.

$ ssh -t serverA ssh serverB

はい

$ hostname
grinchy

$ ssh -t skinner ssh mulder
Last login: Fri Aug 16 18:19:56 2013 from skinner.somedom.net

$ hostname
mulder.somedom.net
$

iptables

ポートを必ず転送したい場合は、次の規則が有効になると思います。

$ iptables -t nat -A PREROUTING -p tcp -d 10.45.13.220 --dport 11001 -j DNAT --to 5.12.252.248:22
$ iptables -A FORWARD -i eth1 -o eth0 -p tcp -d 5.12.252.248 --dport 22 -j ACCEPT

ここで、eth1 は外部インターフェイス、eth0 は内部インターフェイスです。

おすすめ記事