nic 2개를 본딩한 뒤에 SIOCGIFHWADDR 에서 한개의 맥 주소만 보

jai의 이미지

ethernet card 2개를 본딩을 했습니다.
주로 eth0 의 맥주소 값으로 nic 값이 셋팅됩니다.

ifconfig 를 하면 bond0, eth0, eth1 이 모두 동일한 한개의 ip, mac 주소값을 갖습니다. 또 ioctl(SIOCGIFHWADDR) 결과에서도 bond0, eth0, eth1 모두 같습니다.

/etc/sysconfig/hwconf 에는 카드 회사만 적혀있네요.
/etc/sysconfig/network-scripts/ifcfg-bond0 에는 ip 주소만 적혀있습니다

eth0 를 다운시킨후에 bonding 모듈을 로딩하면 eth1 의 맥주소로 변경이 됩니다. 맥주소 2개가 어딘가에 보관되어 있는 것 같습니다만, 장소를 모르겠습니다.
/proc/net, /proc/sys/net/ 디렉토리도 뒤져봤는데 없네요.

as3.0 레드햇에서는 /etc/sysconfig/hwconf 에 맥주소도 기재가 되있는데요.
9.0 부터는 그 파일에 없습니다.

본딩을 하면 2개의 맥주소 중에서 한개값으로 보이는데요.
그 안보이는 맥주소 까지도 알 수 있는 방법이 뭐가 있을까요?
사흘째 뒤지고 있는데, netlink, arp 로도 안될것 같은데,
제가 잘못 재단하고 있는건지.. 제발.. 도움 바랍니다

익명 사용자의 이미지

체널본딩이라는게 하나의 mac으로 동작하도록 바꿔버린건데 바꾸기 전꺼를 알아낼 수 있는 방법이 있을리가 없죠.

익명 사용자의 이미지

HW의 default MAC address를 얻어오는 function을

커널에서는 알지 못하는것 같군요...

HW에서 직접 읽어오는 수밖에 없을듯 합니다.

편법으로 잠시 bonding에서 빼냈다가

initialization을 다시 하고 MAC을 읽은 다음에

다시 bonding에 추가하면 안될까요?

아는게 이것뿐이라... 저도 궁금한데 방법이 있으면 누가 좀 가르쳐 주세요 :oops:

익명 사용자의 이미지

eth0 으로 본딩한 후에
bonding 모듈을 내리고
ifdown eth0
boding 모듈올리면,
eth1의 맥주소로 변경됩니다.

또 ifdown eth0 을 한뒤에는
ioctl(SIOCGIFHWADDR)로 eth0 의 맥주소를 못 얻어오던데요.
lo, eth1 만 얻어와요, 물론 ifconfig -a 하면 eth0이 보입니다.

이걸루 생각하면 시스템에서 맥주소를 모두 관리하고 있을 것 같은데요.
짧은 생각으로 커널에서 매번 nic 카드에서 맥주소를 읽어오는 것은 무리일것 같습니다만.. 다른 방법으로 맥주소를 얻는 방법을 아시나요?

albamc의 이미지

bonding 커널 소스를 보니 다음의 내용이 보입니다.

slave device에 대한 구조체에서 ...

struct slave {
    struct net_device *dev; /* first - usefull for panic debug */
    struct slave *next;
    struct slave *prev;
    s16    delay;
    u32    jiffies;
    s8     link;    /* one of BOND_LINK_XXXX */
    s8     state;   /* one of BOND_STATE_XXXX */
    u32    original_flags;
    u32    link_failure_count;
    u16    speed;
    u8     duplex;
    u8     perm_hwaddr[ETH_ALEN];
    struct ad_slave_info ad_info; /* HUGE - better to dynamically alloc */
    struct tlb_slave_info tlb_info;
};

perm_hwaddr이 새 HW address를 쓰기전에 기존의 HW address를
저장해 두는곳 같습니다.

device를 release 하는 부분 소스를 보니 release 하기 전에 이 address를
다시 restore하는 부분이 있더군요.

그렇기 때문에 bonding을 하면 mac adress가 바뀌었다가

release하면 다시 원복 되는것 같습니다.

하지만 이 address를 user level에서 (kernel 수정 없이) 알수는 없을것 같군요.

^^*

댓글 달기

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