2017年9月18日 星期一

[LINUX] 跨網域連接NFS伺服器 - Part2 - 透過ssh tunnel連接NFS

透過Part1,example.ddns.net:22已經開通,通過這個連接點再配合Virtual Server連接到內網伺服器進行ssh登入,可以開始在異地登入ssh替伺服器做設定



接著處理如何在異地連接NFS,一樣是面對路由(Route)問題,起初友驊有三個想法
  1. 開VPN Server遠端登入私人區域網路?做法有點繁複...
  2. 把NFS服務相關Port(:892 :2049 :111)都透過分享器Virtual Server轉發?這些Port都暴露在外好像有點危險,而且區網內的其他設備也不能用到這些PORT了
  3. 既然ssh是必要開放的Port,可不可以透過ssh port完成這一切?好像是最簡潔安全的做法,試試看
果然,很可能我是最後一個煩惱這問題的人,還有2017首位已知用火的男人,參考 http://jamyy.us.to/blog/2012/04/3759.html

動作如下:

伺服器端設定:

  • NFS的種種設定
    • #vim /etc/exports
      • 分享點要寫成 /home/share localhost(rw,sync,no_root_squash,insecure)
      • 寫::1不知為何不行??
    • #exportfs -r -v
      • 使exports生效
    • #vim /etc/sysconfig/nfs
      • 致能MOUNTD_PORT=892(將mount port固定)
    • #service nfs restart
      • 重啟nfs服務
    • #showmount -e 
      • 確認一下設定有沒進去
    • #netstat -tnlp | grep rpc
      • 確認:892是否開啟
      • :892是rpc.mountd 用的埠口
      • 用來讓rpc.mountd管制檔案權限,見鳥哥
    • #rpcinfo -p | grep nfs
      • 確認:2049是否開啟
      • :2049是NFS Service Port

客戶端連線:

  1. #ssh -f -N -c arcfour -o ServerAliveInterval=60 -L 2222:localhost:2049 myaccount@my.nfs.server
    1. 這行很有意思,此ssh tunnel建立後, local:2222的通信最終會轉發到remote:2049,但!仍是通過remote:22達成,也就是remote:22變成類似Gateway的角色
  2. #ssh -f -N -c arcfour -o ServerAliveInterval=60 -L 3333:localhost:892 myaccount@my.nfs.server
    1. 同樣是forwarding ports
  3. #mount -t nfs -o port=2222,mountport=3333,tcp localhost:/shared/path /mnt
    1. 通過:2222及:3333加上ssh port forwarding,事實上server仍是以:2049及:892處理NFS相關服務,只是通通從:22流出流入
    2. 為何:111(rpcbind)不用forwarding...不懂??
    3. localhost填遠端主機名
心得:原來ssh可以這樣玩,太神了(我鄉巴佬

參考1:man ssh
參考2:  man nfs

沒有留言:

張貼留言