[질문] Network Virtual Interface가 존재하는 서버에서 socket

Saintlinu의 이미지

안녕하세요 ..

linux box에서 여러개의 NIC가 있는 대부분의 경우 Network의 subnet이

다르기 때문에 socket binding에 의한 문제는 제기 되지 않을 텐데요

eth0:1 과 같은 가상 디바이스를 사용하여 사용할때 socket binding에

문제가 있어서요.

socket()함수를 사용하여 bind()시키면 eth0의 IP를 사용하거나

또는 default gateway로 나갈수 있는 ( 이경우는 NIC가 2장일때 입니다.)

Network Interface의 IP를 가지고 socket()~bind()을 하네요.

여기서 문제 되는것은 가상 IP를 이용해야 상대편 서버와 통신 할 수 있는

환경이 될때 telnet 이나 traceroute를 사용 할 수 있도록 바이너리를

만들고 싶은데 능력이 부족하네요..

특정 NIC를 잡을 수 있도록 socket()에 지정 할 수 있는 방법을 알고 싶어요

예)

eth0 : 192.168.0.1
eth0:1 100.168.0.1

ping 100.168.100.1 일경우

binding device는 192.168.0.1을 사용하기 때문에 ping 이 깨어집니다.

이때

ping -I 100.168.0.1 100.168.100.1 일 경우

binding device가 정상이기 때문에 사용가능합니다.

telnet 100.168.100.1 일 경우

위 처럼 192.168.0.1을 binding device로 사용하기 때문에

통신이 되지 않습니다..

긴 글 읽어 주셔서 감사합니다 _(__)_

sunyzero의 이미지

일단 서버인지 클라이언트인지 글이 조금 헷갈려서 둘다 적어봅니다.
서버인 경우에는 보통 INADDR_ANY(0)로 바인딩하면 상관없으니 어느 디바이스에 붙어야 한다는 것은 조금 어폐가 있는 것 같습니다. 그리고 클라이언트의 경우엔 바인딩이 아나리 라우팅 테이블을 통해서 나가므로 라우팅 테이블만 제대로 되어있다면 주소가 몇개가 되든지 간에 상관이 없을 것입니다. 그리고 1개의 NIC에 여러개의 앨리어스를 할당하는 경우는 실제 서브넷은 동일하거나 혹은 브릿지로만 물리적으로 섹터를 나누어진 경우이므로 아무런 문제가 발생하지 않습니다.

일반적인 그냥 프로그램으로 접속하는데 아무런 문제가 없을듯 하며, 잘 안된다면 라우팅 테이블을 살펴보시는게 좋을것 같습니다.

========================================
* The truth will set you free.

댓글 달기

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