VPN 네트워크 프로그래밍....도와주세요

vlzkcbcb의 이미지

#[PC]#--------#[VPN_1]#---------#[VPN_2]#-----#[Server]#

PC와 Server 사이에서 특정 통신을 하려는데 이는 VPN 구간을 통하여 통신합니다.

저는 VPN 프로그램을 직접 만들어 탑재시켜보려합니다.

이는 예를 든 것이기 때문에...툴을 사용해서 해결하려는건 아니구요..

단순히 네트워크 프로그래밍에서 이런경우는 어떻게 프로그램을짜나 궁금해서 질문드리니 양해부탁드립니다.

(WAN 구간에서 VPN Client 의 요청에의한 bind 및 accept 과정 생략) 
(인증단계 생략...인증성공후)
 
1. WAN 구간에서 accept 과정을 거치고 만들어진 소켓의 파일디스크립터(sock)를 입출력을 나누기위해 dup함수를 통해 복사했다고 가정합니다.
 
2. VPN 통신을 위해 가상의 인터페이스를 만들고 디스크립터(fd)를 얻어옵니다.
 
3. 얻어온 가상인터페이스의 디스크립터를 입출력을 나누기위해 dup을 이용하여 복사했다고 가정합니다.
 
4. PC와 Server 의 각 Default Gateway 는 각 VPN 이고, 각 VPN 에는 PC와 Server의 통신에 대한 라우팅을 걸어줍니다.
 
5. PC가 Server 로 보내는 패킷은 VPN_1 가상인터페이스의 fd 에 쌓일 것이기 때문에 read(fd,#,#) 후 
   실재 통신이 될 WAN 구간의 sock 으로 보내기위해 write(sock,#,#) 를 하여 VPN_2 로 무사히 전달합니다.
 
6. VPN_2 에서는 VPN_1 로부터 전달받은 패킷이 WAN 구간으로 받아 sock에 쌓이기 때문에 read(sock,#,#) 후 
   Server로 전달하기위해 VPN 가상인터페이스의 fd로 전달해야되기 때문에 write(fd,#,#) 를 하여 Server 로 전달해줍니다.

이 6번과정에서 write(fd,#,#) 를 하여 VPN_1로 부터 받은 패킷을 서버로 전달해줘야하는데...

서버가 연결된 인터페이스는 이 가상의 인터페이스가 아닐텐데요...write(fd,#,#)으로 가상인터페이스로 전달하면 로컬인터페이스의 라우팅정보에의해...

서버로 무사히 전달되는게 맞나요?

아니면 제가 과정자체를 잘못 계획하고 잘못 이해하고있는걸까요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.