랜카드 두개를 이용하여 서로 패킷 포워딩하는 방법

kmsjlove의 이미지

구조는 다음과 같습니다.

PC1-모뎀-인터넷
PC1은 DHCP로 인터넷 가능합니다.

이때 PC1과 모뎀사이에 PC가 낑깁니다.
다음과 같이요..

PC1-PC2-모뎀-인터넷

이때 PC2에는 NIC가 2개 달립니다.
단!!!
이 NIC는 주소, 넷마스크, 게이트웨이 주소가 전부 없으며
단지 eth0은 eth1로 패킷을 포워딩하고
eth1은 eth0으로 패킷을 포워딩하는 형태가 되어야합니다.
그래서 PC1의 DHCP패킷이 PC2를 거쳐 모뎀으로 향하고 결과가 받아져서 IP를 잡으며
인터넷이 가능하게 되야합니다.

이방법을 구현할 수 있는 툴, 명령어 등등을 알고싶습니다.
고수분들 부탁드립니다~

vhgksl의 이미지

PC1의 패킷이 PC2를 통해서 외부(인터넷)로 통신하고 싶은거군요.
그렇다면 PC1에 임의의 IP를 먼저 잡아주시구요. ( 192.168.xx.xx )
PC2의 eth0에도 같은 네트워크로 잡아줍니다. ( 192.168.xx.xx )
이렇게만 하면 PC1과 PC2로 핑 테스트가 되겠죠?
이제 라우팅설정을 하시면 됩니다.
route 명령을 이용해서 PC1의 패킷이 전부 PC2를 통하도록 설정하면 되겠네요.

^^
----------------------------------------------------
Linux!! 니가 이기나 내가 이기나 끝까지 가봐야 안다!!

kmsjlove의 이미지

PC1은 이미 IP주소가 셋팅되어있을 경우
즉, 이미 고정으로 할당되어 있을 경우입니다.

PC1의 IP는 수정할수가없구요
단지 PC2의 NIC들은 서로 포워딩만 해야합니다.

vhgksl의 이미지

동일한 PC일경우 따로 포워딩 안해줘도 되는걸로 압니다.
혹시 forwarding이 1로 세팅되어있는지 확인해보세요.

route 명령을 해보면 자동으로 eth0 eth1에 대한 routing table가 추가 되지 싶네여.
뭐 없다면 직접 입력하면 되지 싶어요.

^^
----------------------------------------------------
Linux!! 니가 이기나 내가 이기나 끝까지 가봐야 안다!!

trim703의 이미지

리눅스라우터 구성하는 법 질문하시는 건가요?

[root@localhost:~/bin]# cat /etc/sysctl.conf | grep 'net.ipv4.ip_forward'
net.ipv4.ip_forward = 1
[root@localhost:~/bin]#

visualplus의 이미지

pc2에 적당한 ip하나 심어주시고 proxy arp를 돌리면 될 것 같네요.
ip를 전혀 없게 하는건 불가능 할 것 같은데요?
기억이 가물가물하지만 dhcp 요청, 응답 패킷을 포워딩을 하기 위해선 ip가 셋팅되어있어야 했던것 같네요.
또 ip셋팅이 안 된 상태에서 라우팅테이블 적용이 되는지도 모르겠네요..ㅎㅎ;

pc1을 고정ip로 할당해놓으면 pc2는 proxy arp 키고 라우팅 설정만 해 주시면 동작을 할 것 같고,
그렇지 않다면 pc2에 ip를 할당한 뒤 proxy arp를 키고 dhcp forwarding 툴을 사용하셔야 할 것 같습니다.
dhcp forwarding툴은 isc.org 에 있는 dhcp 를 받아 config값 조정으로 포워딩 기능을 수행하도록 하시면 될 것 같네요..

그냥 머릿속으로만 생각한것이라 안될수도 있습니다..^^;

merely_c의 이미지

비슷한 형태의 네트웍을 전에 한번 테스트 해본적( 몇 년전에-기억이 가물가물 )이 있습니다.

현금인출기재부팅보드 였는데

대략적인 환경은
1 현금인출기가 윈도우 98 이어서 자주 패닉이 된다 --> 캡스아저씨가 가서 재부팅을 하던지 해야 한다.
2 아이피주소하나 더 줄 예산은 없다 --> 하지만 원격에서 현금인출기를 재부팅 가능하게 해야 한다.

그래서 구상한게...

현금인출기 ---- eth1 [보드] eth0 ---- 모뎀

그러면 중간에 보드(리눅스) 를 하나 놔두고 거기서 현금인출기랑 gpio 로 보드랑 연결을 해 놓고
보드에서는 arp 를 disable 해 놓은 상태에서 eth0 으로 들어오는 모든 패킷을 eth1 로 보내고 eth1 에서 보내는것도 eth0 으로
하지만 예외 상황옵션으로 eth0 에서 들어오는 패킷중 dest port 가 특정포트로 들어오는것을 보드에서 처리 ( 리부팅 명령 패킷 ) 하는 형태로 했었네요.
실제 보드는 현금인출기및 여타 서버에서 볼때는 transparent 합니다.

커널 소스도 좀 수정하고 어플도 만들고 했었습니다.
실제 명령어로 안 될것으로 생각됩니다.

비슷하게 divert socket 이 있는데 이건 저도 테스트해보지는 않았네요.http://www.faqs.org/docs/Linux-mini/Divert-Sockets-mini-HOWTO.html

정보공유는 자신감의 표현입니다

preisner의 이미지

브릿지가 필요하시군요.
리눅스 브릿지로 검색하면 문서가 많이 있습니다.
http://yahon.tistory.com/44

요즘엔 커널에 기능이 포함 되어 있어 어렵지 않을 겁니다.

댓글 달기

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