[IP마스커레이드] 인터넷 공유 호스트 추가 질문 (2대->3대)

beprog의 이미지

안녕하세요~
컴 2대를 IP마스커레이드로 인터넷을 공유해서 쓰고 있습니다. 컴이 한대 더 생겨서 또 인터넷 공유를 하려고 하는데 3대를 동시에 해보지 않아서 조언을 구할려고 합니다.

A컴은 인터넷에 직접 연결되구요 랜카드가 두개(DHCP, 192.168.0.1) 꽂혀있습니다.
B컴은 A컴과 크로스케이블을 통해서 연결되고 랜카드가 하나(192.168.0.2) 꽂혀있습니다. gateway를 192.168.0.1로 설정해줬습니다.
A컴은 RH9, 항상 켜놓습니다. B컴은 RH9와 windowsXP를 멀티부팅합니다. C컴도 B컴과 마찬가지로 설치할 예정입니다.

여기까지가 지금까지 쓰고 있는 방법이구요.

문제는 C컴이 새로 생겨서 함께 인터넷 공유할려구요. 제가 생각한 방법을 말씀드리면요.

A컴에 랜카드를 하나 더(192.168.0.3) 추가 합니다. C컴에도 물론 랜카드가 하나(192.168.0.4) 있어야겠죠. 그리고 이 두개의 랜카드를 크로스케이블로 연결합니다. 즉 B컴과 C컴은 직접연결되지 않습니다.

여기서 질문입니다.
1. C컴의 gateway는 192.168.0.3(A컴의 세번째 랜카드)가 되어야 할 것 같은데 이렇게 하는게 맞습니까? 컴한대에 gateway역할을 2번이나 한다?

2. rc.firewall를 어떻게 고쳐줘야할지 이런 경우의 예제를 찾을 수가 없었습니다. 걱정되네요.

3. A컴에서 세번째 랜카드를 꽂으면 부팅 시에 인식을 합니까? eth2라고 제대로 이름이 붙을까요? 리눅스 설치 후에 하드웨이를 붙이거나 때어낸 적이 없어서 궁금합니다. 설마.. 다시 깔아야 할까요??

4. A컴에 RH9 대신에 데비안(woody 또는 sid)을 깔아볼 생각입니다. 인터넷 공유 방법에서 RH9와 차이가 나는 부분이 있습니까?

읽어주셔서 감사합니다. :D

래리버드의 이미지

꼭 크로스케이블로 연결해야하는 이유가 있는가요?
그냥 싸구려 4port나 8port dummy hub 하나 구해서 연결하면 더 편할꺼
같은데요.
앞으로 또 PC가 늘어나면 또 랜카드 2개 더 구입하는 그런 낭비를 하실 필요가
없을텐데요.

허브를 사용하면 크로스케이블도 필요없고, iptables setting도 그대로 사용하시면 될꺼고요, PC 게이트웨이도 지금 잡으신데로 그대로 사용하시면 되고요,
단지, PC IP만 하나 추가 되는거네요. 어차피 서브넷을 같은거 사용하니
신경쓰실 필요 없지만...

비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.

beprog의 이미지

제가 허브를 사용해본적이 없거든요.
거기에다 크로스케이블이 벌써 깔려있구요 랜카드도 공짜로 2개가 생겼습니다. :D
그럴가능성은 적지만 컴이 몇대 더 생긴다면 진짜 허브 장만해야겠네요.^^;

maylinux의 이미지

4포트 더미허브 는 쌉니다.

얼마전 용산에서 보니.15000 이면 사더군여.. 10mbps
랜카드가격이랑 별 차이도 안나니.. 차라리 하나 사는게 좋을것 같네여.

저두 4포트 더미허브 쓰는데.. 제작년에 4만원주고 샀던겁니다.

생각보다 유용하구여..

요즘에..100 짜리로 업글할까 생각중입니다.

아바타 제작기간~~ 무려 5초!!!

지나가는새의 이미지

방법 1.
중간PC에 bridge를 올린다.

A(NAT or dhcp) -- B ---- C

C는 A의 클라이언트가 됩니다.

NIC는 A에 2개, B에 두개, C에 한개 되겠습니다.

장점 : bridge를 올려볼 수 있다 -_-;
firewall 등의 스크립트에 C의 IP만 적용하면 된다.
단점 : C를 쓰려면 A와 B가 모두 켜져 있어야 한다. (B를 끄고 C를 A에 직접 연결해도 되겠죠)

방법 2.
두개의 NAT를 돌린다.
A ------ B
+-- C

A--B (10.10.10.0/24), A--C(11.11.11.0/24)

방법 3
A에 bridge를 올린다.
현재(A와 B만 사용할 때) eth0 이 wan, eth1이 lan이라고 할 때.
새로운 NIC(eth2)와 eth1을 bridge로 묶는다.)

설치는 방법 2와 같으며, IP 는 기존의 것(B에 쓰던..)을 쓸 수 있다. firewall 등의 다른 문제도 쉽게 해결된다.

쓰고보니 3번이 젤 쉬울것 같군요.

Fever Pitch!

지나가는새의 이미지

아.. 3번 으로 할때는

eth0과 bridge 를 서로 엮어 줘야 겠죠.

Fever Pitch!

lobsterman의 이미지

허브 쓰시구요..

만약에 맨첨에 크로스 케이블 안쓰고 첨에 직렬을 쓰씨면

나머지는 모두 크로스 케이블로 쓰시면 됩니다.

허브가 그냥 개발 되었겠읍니까?

무한한 상상력과 강한실행욕구는 엔지니어의 마지막 무기~

beprog의 이미지

A컴 : CPU 1.7G, DDR256M, 80G HDD, debian woody 3.0r1 / windows XP
B컴 : CPU 1.0G, SDRAM128M, 4G HDD, hancom linux 3.1ftp / windows XPㅁ
C컴 : CPU 333M, SDRAM128M, 20G HDD, redhat9 / windows XP

두루넷을 통해서 인터넷에 연결되고 realtek 8139 랜카드 5개, 5port 허브(datagram) 하나 있습니다. 랜선은 충분하다고 가정합니다.^^;

목표는 3개 컴퓨터의 인터넷 공유입니다. 우선 시도해 본 것은
A
+-DHCP--------두루넷 모뎀
+-192.168.0.1--B(192.168.0.2)
└-192.168.0.3--C(192.168.0.4)

A에 세개의 랜카드를 꽂고 각각 ip를 정한 다음 위의 그림대로 연결했습니다. A에서는 ipmasq 를 이용해서 인터넷 공유를 시도했는데 A, B 두개까지는 잘 되다가 C를 연결한 경우에 C는 인터넷 연결을 할 수 없었습니다. 참고로 ipmasq2.cjb.net 을 참고로 해서 rc.firewall-2.4 를 사용했습니다. 나름대로 약간 수정 해봤지만 안되더군요.

두번째는 세개의 컴퓨터를 모두 허브에 물리는 겁니다.
두루넷 모뎀
|
허브
+-A
+-B
└-C
역시 안되더군요. c class ip를 줘도 안되고 dhcp로 해도 안되구요. 얼마전부터 두루넷이 허브를 사용한 인터넷 공유를 막았다는 얘기도 있었습니다.

세번째 방법은 위의 두 방법을 섞은 것입니다.
A
+-DHCP--------두루넷 모뎀
└-허브+---B
└--C
A, B 두개의 컴이 ipmasq를 이용해서 인터넷 공유에 성공했다는 사실을 이용해서 중간에 허브로 B,C를 연결한 것입니다. B와 C에서는 인터넷 연결에 실패했습니다.

네번재 방법은 가르쳐주신 bridge를 이용한 방법입니다. 이것 저것 해보는 중인데 아직 제대로 알지 못해서 헤매고 있습니다.
A
+-DHCP--------두루넷 모뎀
+-192.168.0.1--B(192.168.0.2)
└-192.168.0.3--C(192.168.0.4)
연결상태는 첫번재 방법과 같습니다. 다만 A컴에서 bridge를 만들면 된다기에..
2.4.21버전 커널소스에 ebtables-brnf_vs_2.4.21.diff.gz 를 패치해주고 데비안 식으로 커널 컴파일 했습니다.(make-kpkg configure/kernel_image) configure할때 bridge부분 모두 모듈로 만들었습니다. 새로운 커널로 부팅해서 필요한 모듈 띄우고 ebtables-v2.0.4.tar.gz 다운 받아 설치하니까 brctl(bridge control?) 명령을 쓸 수 있더군요. ftp.tux.org/people/alan-cox/BRCFG.tgz 를 다운받아 brcfg 도 쓸수 있었지만 이 다음부터는 뭐가 뭔지 몰라서 망설이고 있습니다.

문서에 나와있는 경우와 저의 경우가 차이가 나는 것 같기도 하고 어렵네요. 여러분 같으면 저의 경우에 어떤 방법으로 인터넷 공유를 하시겠습니까? 제가 잘 몰라서 조금 자세히 가르쳐주시면 감사하겠습니다.^^;

참고문서

kldp->네트워킹->방화벽->Bridge Firewall 문서
http://ac2i.tzo.com/bridge_filter/

지나가는새의 이미지

일단 허브를 통한 연결은 안되는것 같더군요.(되는데도 있고 안되는데도 있더군요)

일단 허브를 쓰지 못하는 이상 A는 한당 켜져 있다는 가정을 하겠습니다.
그리고 방화벽부분을 모두 코멘트 처리 하고, 연결을 만드신 이후에 방화벽쪽을 추가하는것이 방법상 좋을것 같습니다.

DHCP(두루넷) ----- A

A를 192.168.0.2 라고 하구요, 이는 두루넷에서 할당해주는 아이피겠죠.

기존의 방법(2대)는 가정하건데,

dhcp----(192...)A(17...) ----- (17.x.x.x.)B 로 되어있을듯 합니다.

masq는 eth0(WAN)과 eth1(LAN)을 엮어서 하였겠지요.

다시 돌아와서
A에다가 bridge를 올리셨다고 하셨으니, 그 방법을 쓰겠습니다.
새로운 랜카드(eth2)가 문제군요,

A 컴퓨터의 NIC 구성을 다음과 같이 하겠습니다.
(brctl로 설정한 bridge 이름을 br로 가정하겠습니다)

eth0 ---------- DHCP로 연결
eth1+eth2 = br ------- B와 C로 연결

그렇다면 A컴터에는 eth0 과 br이 아이피를 가질 수 있겠죠.
eth0 은 종전대로 192... 가 되겠고, br에는 예전에 eth1에 주던 17.x.x.x 를 주시면 되겠습니다.

masq를 수정해줘야 겠군요, 전에는 eth0과 eth1을 엮어 줬지만 지금은 eth0과 br를 엮어줘야 하겠습니다.

그리고 C 컴에다가 masq에서 할당한 IP중 하나를 지정해주면 되겠죠.

그렇다면 다음과 같은 연결이 될것 같습니다.

DHCP-----(eth0:192...)A(br:17.x.x.x.) ------ B(17.x.x.x)
....................................................+---- C(17.x.x.x)

그 다음에 방화벽에 관한 부분에서 C 컴이 나갈 수 있도록 설정을 변경해주면 되겠습니다.

요점은,
bridge로 두개의 NIC를 묶었으되, A컴에서는 그것을 하나의 인터페이스로 본다는것,
물리적으로 2개인 NIC는 모두 br이 가지는 IP를 가지고 있고, 이것은 마치 허브처럼 연결되어 있다는것(이론적으로는 조금 다르지만)

저도 masq랑 bridge 개념이 없을 때 NIC 네개 가지고 삽질을 해봐서리.. 흐흐 이정도면 구성하는데 무리가 없을듯 합니다.

Fever Pitch!

beprog의 이미지

우선 많이 가르쳐주셔서 감사드립니다. 정말 막연했는데 많은 도움이 됐습니다.

이렇게 쓰시는 분이 많은지 모르겠는데요 저와 비슷한 상황에 있는 분이 혹시 있을지 해서 제가 성공한 순서를 간단하게 정리해볼까 합니다.

A컴 : CPU 1.7G, DDR256M, 80G HDD, debian woody 3.0r1 / windows XP
B컴 : CPU 1.0G, SDRAM128M, 4G HDD, hancom linux 3.1ftp / windows XP
C컴 : CPU 333M, SDRAM128M, 20G HDD, redhat9 / windows XP

A컴은 debian을 주로 쓰고 계속 켜놓습니다. 여기에 NIC가 3개 설치되어있고 각각을 eth0, eth1, eth2 라고 합시다. 제가 두루넷을 쓰기 때문에 eth0은 DHCP로 설정하고 primary/secondary nameserver 만 지정한 상태로 씁니다. eth1과 eth2는 ip를 일단 부여하지 않습니다.(ip를 줘도 되는지는 모르겠지만 ip를 주지 않은 상태에서 성공했습니다.)

B컴과 C컴은 windows를 주로 쓰는데 각각 192.168.0.2, 192.168.0.3으로 지정하고 gateway는 192.168.0.1로 정합니다.(나중에 A컴에 bridge를 만들어서 192.168.0.1로 지정할 겁니다.) 각각의 nameserver도 A컴과 같게 지정해 줬습니다.

목표는 A컴이 계속 켜진 상태에서 3개 컴퓨터의 인터넷 공유입니다.

우선 A컴에서 커널 컴파일을 합니다. 2.4.21버전의 커널에 ebtables-brnf_vs_2.4.21.diff 파일(http://ebtables.sourceforge.net/download.html)을 patch 합니다.
http://www.linkabu.net/linux 를 참고해서 커널 컴파일을 합니다.(스페인어로 되어있는데 커널 옵션과 명령만 참고하세요^^) masq와 bridge에 대한 옵션을 체크하시면 됩니다. 참고로 전 sub option까지 모조리 모듈로 만들었습니다.

새로컴파일한 커널로 부팅하고 필요한 모듈을 띄웁니다. http://bridge.sourceforge.net/download.html 에서 bridge-utils-0.9.6.tar.gz를 다운받아 적당한 곳에 설치합니다. 그러면 brctl이란 명령어를 쓸 수 있습니다.

현재 상태는 ifconfig 하면 eth0과 lo만 잡힌 상태입니다.
http://www.linkabu.net/linux/ 의 아랫부분을 참고해서 다음을 실행합니다. 상황이 다르기 때문에 조금 수정했습니다. 즉 eth1과 eth2를 묶어서 br0을 만들고 나중에 ipmasq로 eth0과 br0을 묶어줍니다.

brctl addbr br0
brctl addif br0 eth1
brctl addif br0 eth2
ifconfig eth1 0.0.0.0 promisc
ifconfig eth2 0.0.0.0 promisc
ifconfig br0 192.168.0.1 up

이렇게 하면 eth1과 eth2의 대표로 br0이 192.168.0.1이란 ip를 갖게 됩니다. 이때 ifconfig 해보면 eth0,eth1,eth2,lo,br0이 나타나는데 eth1과 eth2는 ip에 해당하는 줄이 없습니다.

이제 마지막 남은 일은 ipmasq를 처리하는 겁니다. ipmasq2.cjb.net의 "IP Masquerade HOWTO" 를 참고해서 rc.firewall-2.4를 조금 수정합니다.
EXTIF는 eth0, INTIF는 eth1로 해서 쓰는게 보통인데 지금은 eth1과 eth2가 br0으로 묶였기때문에 INTIF가 br0이 되어야 합니다. rc.firewall-2.4를 실행하면 끝납니다.

테스트해본 결과 B컴과 C컴에서 모두 인터넷이 가능했고 192.168.0.1을 통해서 A컴에 접근이 가능했습니다. 이것 때문에 더미허브 장만 했는데 괜히 돈썼네요. :D 인터넷 공유 성공하고도 뭐가뭔지 잘 모르겠지만 .. 참 신기합니다.^^

참고자료
ipmasq2.cjb.net - IP마스커레이드
http://www.linkabu.net/linux - 스페인어로 된 howto문서
bridge.sourceforge.net
http://ebtables.sourceforge.net

Saintlinu의 이미지

1. Dummy or Switch HUB가 없을 때

Thrunet DHCP(eth1) <-> 192.168.0.1(eth0)의 메인서버에

기존의 한 컴퓨터 192.168.0.2가 있으며 한대가 추가 되었을 경우

메인서버에 Ethernet card를 추가해서 다른 IP대역을 주면 됩니다.

192.168.1.1(eth2) <-> 182.168.1.2 (추가된 컴퓨터) 이렇게 작업하시면

됩니다. 동일안 IP대역을 주고 싶으시다면 Layer 3 level( Router )이 아니라

L2 layer (switch)로 처리해야하기 때문에 bridge 기능을 첨가 하셨야 합니다.

2. HUB를 사용하신다면

한큐에 해결 됩니다.

추가된 컴퓨터에 192.168.0.0/24 대역의 아이피를 사용하시면 되고

default gateway를 192.168.0.1로만 잡아 주시면 되기 때문입니다.

잡설이 많이 길어졌습니다.

즐거운 네트웍 되시길..

행복하세요 ^_^

beprog의 이미지

결론은 무지하게 삽질했다는.. ^^;

NAT 두개 돌리는 게 휠씬 쉬울 것 같네요. 그래도 힘들게 브릿지 만들었는데 당분간 이렇게 쓸랍니다. ^^

댓글 달기

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