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 は内部インターフェイスです。