여러 곳에 떨어진 장비들에 원격으로 접속해야 합니다.

jinhoy97의 이미지

안녕하세요, 아주 골치아픈 문제가 있어서 어떻게 하는게 좋을지 고민을 나눠보고자 합니다.

현재 소형 산업용 컴퓨터로 작은 시스템을 구성하려고 합니다. 운영체제는 Debian linux이고 ARM기반의 컴퓨터입니다.
문제는 이 장비가 '세계 여러 나라' 혹은 대기권 밖의 '어디로' 날아가야 하는데 이 장비를 원격으로 한국에서 조절해야 합니다. 더 짜증나는건 이 장비가 연결될 네트워크가 어디는 학교, 어디는 사무실 네트워크다 보니 통합하기가 힘듭니다. 지금 이것들을 원격조절해야 하는 상황입니다.

제가 생각하는 해결책은 이겁니다.
1. Amazon cloud에 가상컴퓨터 하나 만들고 OpenVPN Server를 깐다.
2. 각 산업용 컴퓨터에 OpenVPN client를 깔아 자동으로 돌게 한다. 1.에서 만든 서버를 바라보게 한다.
3. OpenVPN Server에서 할당된 IP가지고 VNC / SSH로 들어가서 원격조절한다.

근디 OpenVPN은 2명 정도만 무료고 그 이상은 5$씩 한 사용자당 내야 된다고 하고 있네요. 거기다 어이없게도 Linux에서 client를 만들기 위해 제가 구성한 openvpn서버에 웹브라우저로 들어가서 설정파일을 받아보면 '텅~' 비어 있고요. (Windows에서는 성공적인디.. 엉엉)

혹시 이런 경우 제가 하는 접근방법이 맞는 방법일까요? 아니면 더 나은 방법이 있을까요?

shint의 이미지

저는 할줄은 모르지만... 아마도 다양한 방법이 있을겁니다.

1. 휴대폰 사용
2. 위성 TV 사용
3. 방송파. 레이저...
4. 레이더 제작
5. 천문대나 기상청 협조
6. 정부 군대 협의
7. 선박. 자동차. 기차. 비행기. 협의
8. 다른 위성과 협의
9. 각종 통신 시스템 활용 및 제작
10. 다음. 네이버. 구글... 클라우드 업체 많던데요;;; 협의하면 좋을지도;;;

너무 많은거 같습니다. 현실 가능성 여부를 찾아 보면. 많을거 같습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

jinhoy97의 이미지

웃자고 적어논건데 올려놓고 보니 웃기지가 않네요. 더 어이없는건 수정이 안되요. T_T. 답변 감사합니다.

jeemin1의 이미지

SSH터널링이 더 나아 보입니다.

각 장비들이 아마존가상컴퓨터에 SSH터널링을 항시 유지하도록 짜 두고,

각 터널링 포트로 원격제어하는게 가장 현실적인 답이 될 거 같네요

무료이기도 하구요 ㅎㅎ

jinhoy97의 이미지

특정 장비마다 다른 포트를 이용하게 서버를 설정해놓고 서버와 SSH 터널링을 하라는 이야기신가요?

익명 사용자의 이미지

이 방법은 포트 번호가 달라야 하니까 별로 효과적인 방법이 아닌거 같고...
원래 생각하신 OpenVPN이 맞는거 같아요...
포트 번호 갯수보다는 내부ip번호 갯수가 더 많을테니...

찾아보니까 OpenVPN이 GPL이던데 유료일리가...
Community Download에서 받아도 역시 마찬가지로 2명까지만 무료인가요?
http://openvpn.net/index.php/download/community-downloads.html

분명히 제한 없이 하는 방법이 있을것 같습니다.

jinhoy97의 이미지

정작 2개 사용자만 가능하다고 나와있습니다. https://openvpn.net/index.php/access-server/pricing.html 이제 그냥 직접 설치하는데도 이따위였습니다.

jinhoy97의 이미지

어흑~

jeemin1의 이미지

갯수가 얼마나 되는지는 모르겠지만, VPN보다는 SSH터널링이 더 가볍기 때문에 더 많은 장비를 물릴수 있으리라 봅니다. 물론 구현 난이도로 따진다면 더 많은 기능이 있는 VPN쪽이 쉽지만요. 그런데 정말로 어떠한 네트워크에 물려질 지 알 수 없는 상황이라면 보안문제 때문이라도 VPN은 더 위험하지 않나 싶네요. 수많은 학교네트워크나 연구실네트워크 중에서 하나만 뚤려도 같은 네트워크에 물려있는 vpn도 위험해 질 여지가 있으니까요 (물론 여지만 있을 뿐; 대부분은 이상 문제 없죠;;) 환경 구축 난이도 자체는 ssh쪽이 차라리 쉬울것입니다. 물론 환경을 구축한 다음에는 한개의 연결밖에 안되는 SSH터널링쪽이 구현상의 난이도는 더 어렵겠네요.

특정 장비마다 고유번호를 물려서 정해진 포트로 터널링 하도록 구성하시면 될 것 같습니다. 이론상으로 6만 5천개의 포트를 열 수 있으니 갯수 걱정은 없을것입니다.

jinhoy97의 이미지

그런데 장비를 6만 5천대 이하로 깔릴 것인가.. 그건 답을 할 수가 없네요.. 고민스럽습니다. 어흑

snowall의 이미지

포트 제한을 넘어가면 그때 IP를 하나 더 도입하시면 되죠.

피할 수 있을때 즐겨라! http://melotopia.net/b

jeemin1의 이미지

아무리 가상서버에 자원을 많이 준다 해도

포트 제한은 커녕

만개쯤도 도달 못하고 시퓨나 랜카드 용량 부족으로 뻗을것으로 보입니다 ㅎㅎ

어차피 여러대 도입은 각오하셔야 할듯 하네요

jinhoy97의 이미지

이 문제도 절대 간과할 수는 없지요. 답변 감사드립니다.

익명 사용자의 이미지

SSH 터널링을 하되, 예약할당제를 실시하면 어떨까요?

1. 모든 클라이언트가 cron으로 몇분마다 서버에 접속해서, http://server/ssh.html(이름은 마음대로)를 확인한다. 이 과정에서 서버는 각 클라이언트를 확인하고, 제대로 작동하고 있다는 로그 파일을 남긴다.

연결시
2. 관리자가 어떤 클라이언트 ABCD에 접속할 일이 있으면, ssh.html에 "연결-클라이언트ABCD:포트1234"라는 내용을 추가한다. 이때 포트번호는 현재 사용하고 있지 않은 포트번호로 자동 할당한다.
3. 클라이언트ABCD가 ssh.html를 확인하고, 자기 이름이 있으므로 포트 1234로 서버에 접속한다.
4. 연결이 성공하면 클라이언트 ABCD는 sshlogin.html에 연결해서 연결성공을 서버에 알린다.
5. 몇분 후에 관리자는 해당 포트로 클라이언트 ABCD를 사용한다.

연결해제시
5. 사용이 끝난 후에 "연결..."내용을 지우고 "연결해제-클라이언트ABCD:포트1234"라는 내용을 특정 페이지에 추가한다.
6. 클라이언트ABCD는 ssh.html을 확인한 후에, ssh 터널링을 해제하면서, http://server/sshlogout.html에 접속해서 연결을 해제함을 서버에 알린다.
7. 서버는 ssh.html의 내용을 정리한다.

장비에 필요할 때 곧바로 접근하지는 못하겠지만, 그 딜레이는 고작해야 몇분?이고, 필요한 장비하고만 연결을 유지하므로 훨씬 경제적으로 운용 가능하겠지요. http 서버에 동시 접속자 수가 몰리는건 각 제품이 ssh.html을 받아가는 시간을 적절히 분산하면(제품번호 끝자리 x개에 따라 분산?) 해결이 될테고요.

익명 사용자의 이미지

아참 그리고, 해킹에 안당하시려면, 인증과정이나 클라이언트 확인 부분에서, 신경을 많이 쓰셔야 될것 같군요... 누가 제품 까보고 연결해서 다른 클라이언트나 서버에 접근하려 든다던가...

gauryan의 이미지

OpenVPN 배포 버전이 2가지네요.
http://openvpn.net/index.php/open-source/245-community-open-source-software-overview.html 에서 보시면

첫번째는 유료버전인 Access Server Edition
두번째는 무료버전인 Community Editition

http://openvpn.net/index.php/access-server/pricing.html 에 적혀져 있는 내용은 Access Server Edition 에 해당이 되며,
http://openvpn.net/index.php/open-source/345-openvpn-project.html 에서 커뮤니티 에디션은 GPL 이므로, 제약 없이 이용할 수 있을 것으로 보입니다.

취미개발자 '해피가이'
[ http://gauryan.blogspot.com/ ]

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.