Linux to LinuxのrsyncコマンドでNo route to hostが出る

2020年4月27日

UbuntuでWekanのホットスタンバイ環境を構築していた際に、
dumpされたDBデータをrsyncで転送し、restoreする…といった手順の
バッチファイルを組んでたんですが、どうもrsyncが通らない。
いや、常に通らないわけではなくて、

rsync -av /home/user/data user@192.168.x.x:/home/user

といった感じの所謂「パスワードを聞かれる状態」では成功するのに

rsync -av /home/user/data user@192.168.x.x::USERDATA

(参考:パスワードなしでrsyncする方法

といったパスワード入力を省いた状態のrsyncコマンドで、
ホストに辿り着けませんでしたといったIP指定をミスったような
エラーが出力される。

rsync: failed to connect to 192.168.x.x (192.168.x.x): No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.1.2]

もちろんpingとかsshは通るので、IP指定は正しい。
どうしたもんか…と検索していると、
どうやらポートが解放されていない状態でも
No route to hostとエラー表示される場合もあるらしい。

(参考:ping は通るのに No route to host と言われる

ということで、rsyncで使用される873番ポートを解放しておいた。

iptables -I INPUT 3 -p tcp -m tcp --dport 873 -j ACCEPT

これでひとまず解消した。

どういうことかというと、下記のサイトを見る限り
その場で認証するときはsshが使われて、
rsync同士での認証だとrsyncプロトコルが使われるので
TCP:873番ポートが開いてないとダメらしい。はえ~

rsyncでディレクトリ同期(バックアップ)

エラー文が正しいとは限らない…っていうのを再認識したなど。