質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • AWS(Amazon Web Services)

    2534questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

ec2から別会社のvpsのdirにnfsでマウントできません。

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 2,625

kaji

score 608

**現象
ec2サーバで
mount -t nfs 外部サーバのip:/export/data /var/www/html/data
mount.nfs: Connection timed out

**詳細
nfsホストサーバの方は、
ec2以外の別のクライアントサーバからは接続できているので、
問題ないと思います。

ホストサーバにec2のipを追加してます。
vi /etc/exports
/export/data ec2のip(rw,root_squash)

# exportfs -ra # 設定反映
# exportfs -v # 設定確認
 /export/data
    ec2のip(rw,wdelay,root_squash,no_subtree_check)

ec2サーバには
以下nfsインストールをしました。
yum install nfs-utils
yum install rpcbind
/etc/init.d/rpcbind start

ec2インバウンド
80,22,2049,111,892(セキュリティ的にはまずいけど、確認のためとりあえず全て0.0.0.0/0)
ec2アウトバウンド
80,22,2049,111,892(全て0.0.0.0/0)

とりあえずvpsからの移行で一時的にnfsを使いたいだけで。
今後はawsの最適化を考えてます。
設定が足りないのでしょうか?
ご回答お願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

"Connection timed out" ですので、TCP/IP または UDP/IP のレベルで到達できないのだと思います。
EC2インスタンスから
rcpinfo -p (NFSサーバー)
showmount -e (NFSサーバー)
で接続できるように、セキュリティグループの制限を緩めていくといいと思います。
例えば、NFSサーバーのIPアドレスのすべてのポートを許可するなど。 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/01 15:37

    セキュリティグループは上でも書いた通り、インバウンド&アウトバウンド共に、nfsのport(2049)を追加し、IPアドレスのすべてのポートを許可している状態です。

    ec2インバウンド
    80,22,2049,111,892(セキュリティ的にはまずいけど、確認のためとりあえず全て0.0.0.0/0)
    ec2アウトバウンド
    80,22,2049,111,892(全て0.0.0.0/0)

    ec2側で実行
    $ showmount -e (NFSサーバー)
    clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

    NFSサーバー側で実行
    $ sudo service nfs status
    rpc.svcgssd is stopped
    rpc.mountd (pid 7257) is running...
    nfsd (pid 7273 7271 7270 7269 7268 7267 7266 7265) is running...
    nfsは動いているようです。

    ec2側で実行
    $ rpcinfo -p (NFSサーバー)
    rpcinfo: can't contact portmapper: RPC: Remote system error - No route to host

    カスタムUDPルールのインバウンド&アウトバウンドにも以下port&全ipを追加しましたが、
    2049,111,892

    同様にエラーが出ました。
    $ showmount -e (NFSサーバー)
    clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
    $ rpcinfo -p (NFSサーバー)
    rpcinfo: can't contact portmapper: RPC: Remote system error - No route to host

    全てのトラフィック(全port)&全ipでインバウンド&アウトバウンドを一時的に設定して確認してみましたが
    同様にエラーが出ました。
    $ showmount -e (NFSサーバー)
    clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
    $ rpcinfo -p (NFSサーバー)
    rpcinfo: can't contact portmapper: RPC: Remote system error - No route to host

    セキュリティの設定が反映されてないのかと思い、port80の許可を削ってhttpアクセスしてみましたが、
    適切にhttpにアクセスできなくなりました、セキュリティは反映されているようです。

    この後、何を調べればよいでしょうか?

    キャンセル

  • 2015/07/01 15:58

    "No route to host" ですので、IP的に到達できないのだと思います。
    EC2インスタンスから NFSサーバーに ping は通るのでしょうか。

    キャンセル

  • 2015/07/01 16:28

    pingでec2サーバからnfsサーバへの疎通はできませんでした。
    ただ、
    以下のようにport22や80を許可することでscpやsshやhttpで接続できたので、
    $ scp (nfsのサーバip):/tmp/test.txt /tmp/
    $ ssh (nfsのサーバip)
    $ wget http://(nfsのサーバip)
    ec2ではpingが通らないからといってnfsが使えないという判断はありませんでした。
    pingが通れば解決に近づきそうなので、pingが通せるか確認してみます。

    キャンセル

  • 2015/07/01 16:39


    アウトバウンドのセキュリティに全てのICMP&全ipを追加したところpingが通るようになりました。
    $ ping (nfsのサーバip)
    PING (nfsのサーバip) ((nfsのサーバip)) 56(84) bytes of data.
    64 bytes from (nfsのサーバip): icmp_seq=1 ttl=51 time=9.71 ms
    64 bytes from (nfsのサーバip): icmp_seq=2 ttl=51 time=10.3 ms

    しかしエラーになりました。
    $ showmount -e (NFSサーバーip)
    clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
    $ rpcinfo -p (NFSサーバーip)
    rpcinfo: can't contact portmapper: RPC: Remote system error - No route to host
    $ mount -t nfs (NFSサーバーip):/export/data /var/www/html/data
    mount.nfs: Connection timed out

    キャンセル

  • 2015/07/01 17:26

    EC2インスタンスから NFSサーバーの他のポートには接続できるのですね。
    「IP的に到達できない」は間違いでした。すみません。

    セキュリティグループで全許可しても NG だとすると、NFSサーバー側の制限かもしれません。
    posrtmapper が開いていれば "rpcinfo -p (NFSサーバー)" は接続できると思うのですが、何か間に Firewall がありませんでしょうか。

    キャンセル

  • 2015/07/01 17:35

    上で回答した通り、解決できました。
    iptableを変更したところ通った感じなのでFirewallなあたりでした。
    みなさんのおかげで解決することができました。時間を割いて回答いただきありがとうございましたmm

    キャンセル

checkベストアンサー

0

ここを見ると、
nfsでは2049、111含み、以下のポートを使うようですので、
全てのポートを指定しなければならないと思います。

portmapper: 111/tcp, 111/udp
nfs: 2049/tcp, 2049/udp
statd: 不定/tcp, 不定/udp
nlockmgr: 不定/tcp, 不定/udp
mountd: 不定/tcp, 不定/udp

不定のものはポートを固定する必要があり、手順も同じページにかかれています。

また、このページでは、showmount -eの結果として、
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
が返っている状況から、iptablesにポートの設定を追加することで解決したという情報があります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/01 17:31

    参照ページにある通り、
    nfsサーバ側のiptablesを変更しました。
    sudo vi /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
    -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
    -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT
    -A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT
    -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT
    -A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT

    #再起動して反映
    sudo /etc/rc.d/init.d/iptables restart

    #nfs-port固定(外部nfsサーバ,ec2側共に)
    $ sudo vi /etc/sysconfig/nfs
    RQUOTAD_PORT=875
    LOCKD_TCPPORT=32803
    LOCKD_UDPPORT=32769
    MOUNTD_PORT=892
    STATD_PORT=662
    STATD_OUTGOING_PORT=2020
    #nfs設定反映(外部nfsサーバ,ec2側共に)
    $ sudo /etc/rc.d/init.d/nfs restart

    ec2のセキュリティグループのTCPとUDPの全てのportと全ipを許可しました。

    これでrpcinfoしたところ接続できました。nfs-mountもできました。
    [ec2サーバ] $ sudo rpcinfo -p (外部nfsサーバip)
    program vers proto port service
    100000 4 tcp 111 portmapper
    100000 3 tcp 111 portmapper
    100000 2 tcp 111 portmapper
    100000 4 udp 111 portmapper
    100000 3 udp 111 portmapper
    100000 2 udp 111 portmapper
    100005 1 udp 892 mountd
    100005 1 tcp 892 mountd
    100005 2 udp 892 mountd
    100005 2 tcp 892 mountd
    100005 3 udp 892 mountd
    100005 3 tcp 892 mountd
    100003 2 tcp 2049 nfs
    100003 3 tcp 2049 nfs
    100003 4 tcp 2049 nfs
    100227 2 tcp 2049 nfs_acl
    100227 3 tcp 2049 nfs_acl
    100003 2 udp 2049 nfs
    100003 3 udp 2049 nfs
    100003 4 udp 2049 nfs
    100227 2 udp 2049 nfs_acl
    100227 3 udp 2049 nfs_acl
    100021 1 udp 32769 nlockmgr
    100021 3 udp 32769 nlockmgr
    100021 4 udp 32769 nlockmgr
    100021 1 tcp 32803 nlockmgr
    100021 3 tcp 32803 nlockmgr
    100021 4 tcp 32803 nlockmgr

    みなさんのおかげで解決することができました。ご回答ありがとうございます。
    決定的な原因は改めて確認しようと思います。

    キャンセル

0


決定的な原因はnfsサーバ側で接続許可するec2のサーバのipを追加してなかったことが原因でした。
もともとiptableには以下のような記述をしていたので、
ここにec2のipを追加しなければなりませんでした。
sudo vi /etc/sysconfig/iptables
-A INPUT -s (元々繋いでた外部nfsクライアントip) -p tcp --dport 2049 -j ACCEPT
-A INPUT -s (元々繋いでた外部nfsクライアントip) -p udp --dport 2049 -j ACCEPT
-A INPUT -s (元々繋いでた外部nfsクライアントip) -p tcp --dport 111 -j ACCEPT
-A INPUT -s (元々繋いでた外部nfsクライアントip) -p udp --dport 111 -j ACCEPT
-A INPUT -s (元々繋いでた外部nfsクライアントip) -p tcp --dport 892 -j ACCEPT
-A INPUT -s (元々繋いでた外部nfsクライアントip) -p udp --dport 892 -j ACCEPT

なのでnfsサーバ側のiptablesについて前回追加した以下部分を削除
-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT

2049,111,892のみ残しec2のipを指定しました。
-A INPUT -s (ec2のip) -p tcp --dport 2049 -j ACCEPT
-A INPUT -s (ec2のip) -p udp --dport 2049 -j ACCEPT
-A INPUT -s (ec2のip) -p tcp --dport 111 -j ACCEPT
-A INPUT -s (ec2のip) -p udp --dport 111 -j ACCEPT
-A INPUT -s (ec2のip) -p tcp --dport 892 -j ACCEPT
-A INPUT -s (ec2のip) -p udp --dport 892 -j ACCEPT

#前回追加したnfs-port固定の以下の部分は設定しなくても接続できたので削除しました。
$ sudo vi /etc/sysconfig/nfs
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020

ec2のセキュリティグループも最小限の許可のみとするために
TCPとUDPの全てのportと全ipを許可を外して、
インバウンドは記述なしで、
アウトバウンドにのみTCPの2049,111,892を追加。
許可IPもnfsサーバのipのみとしました。

これでmountできました。
改めてみなさんありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • AWS(Amazon Web Services)

    2534questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。