리눅스에서 인터넷 연결 공유에 대해 여쭙니다.

이한길의 이미지

예전에 책에서 보고 그냥 되나 보다 하고 넘겼는데...
할려고 하니까 잘 안되네요.

먼저 제 환경은 이렇습니다.

인터넷과 연결된 컴퓨터(서버라 하겠습니다.)
OS : 리눅스(배포판:패도라 코어 2)
장치 : eth1 - 인터넷과 연결(VDSL), eth0 - 다른 컴퓨터와 연결
eth0
ip : 192.168.0.1
subnet : 255.255.255.0
gateway : 192.168.0.1

위 컴퓨터와 완결된 컴퓨터(클라이언트라 하겠습니다)
OS : 리눅스(배포판:패도라 코어 2)
장치 : eth0 - 위 컴퓨터와 연결
eth0
ip : 192.168.0.10
subnet : 255.255.255.0
gateway : 192.168.0.1

이렇게 되어 있어서 서로간에 핑은 됩니다.
그런데 클라이언트에서 외부로 핑이 안되지요.

그래서 찾아보니까

modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

요게 나와서 그대로 했습니다.
그리고 IP주소로 핑테스트를 해보니까 됩니다.
근데 /etc/resolv.conf에 DNS 적어 줬는데 도메인으로 핑하면 안되네요.
언노운호스트라고 나옵니다.

이게 무었때문일까요?
부탁드립니다.

아.. 그리구요...
아이피 주소로 웹페이지 열려구 해도 안열리네요...

핑테스트를 하려고 참고로 사용한 웹사이트는
www.php.com이었구요..
ip는 216.28.47.6였습니다.

방금 해보니 모질라에서 웹 주소를 ip를 적으니 안열리네요...

방금 서버를 윈도우즈로 부팅해서 해보니까
클라이언트에서 도메인으로 핑 테스트해봐도 잘 됩니다.
클라이언트에서는 전혀 다른거 안했는데도 말이지요..

리눅스에서 뭔가 제가 빠뜨린게 있나 봅니다.

삶의여유의 이미지

1. 인터넷 연결할 때 별도의 접속 프로그램(예: pppoe)이 필요한가요, 아니면 VDSL 이나 케이블의 dhcp 를 쓰나요?
별도의 접속 프로그램이 필요한 ADSL 방식을 쓴다면 iptables 옵션에서 eth1 이 아니라 ppp0 등의 디바이스를 적어주세요.
(ifconfig 로 확인 가능)

2. 서버 컴의 게이트웨이를 192.168.0.1 로 주지 말고 그냥 비워두며 다만 gatewaydev=eth1 을 추가하세요.
(/etc/sysconfig/network)

3. iptables -t nat -A POSTROUTING -o ppp0(혹은 eth1) -j MASQUERADE
이거 다음에
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
이것도 추가해보세요.

merely_c의 이미지

이한길 wrote:
그리고 IP주소로 핑테스트를 해보니까 됩니다.
근데 /etc/resolv.conf에 DNS 적어 줬는데 도메인으로 핑하면 안되네요.
언노운호스트라고 나옵니다.

cat /etc/resolv.conf
nameserver 168.126.63.1

이한길 wrote:

아.. 그리구요...
아이피 주소로 웹페이지 열려구 해도 안열리네요...

마찬가지로 위의 네임서버 설정과...
route add default gw 192.168.0.1 eth0 이라고 해주시면
외부로 핑이 나가겠습니다.

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

이한길의 이미지

삶의여유 wrote:
1. 인터넷 연결할 때 별도의 접속 프로그램(예: pppoe)이 필요한가요, 아니면 VDSL 이나 케이블의 dhcp 를 쓰나요?
별도의 접속 프로그램이 필요한 ADSL 방식을 쓴다면 iptables 옵션에서 eth1 이 아니라 ppp0 등의 디바이스를 적어주세요.
(ifconfig 로 확인 가능)

VDSL을 사용중입니다. 접속 프로그램을 사용하지 않았습니다.

삶의여유 wrote:
2. 서버 컴의 게이트웨이를 192.168.0.1 로 주지 말고 그냥 비워두며 다만 gatewaydev=eth1 을 추가하세요.
(/etc/sysconfig/network)

해보니 이젠 외부로 아이피 주소로도 핑이 안나가던데요...

삶의여유 wrote:
3. iptables -t nat -A POSTROUTING -o ppp0(혹은 eth1) -j MASQUERADE
이거 다음에
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
이것도 추가해보세요.

이것도 해봤는데 하자 바로 아이피 주소로도 핑이 나가지 않았습니다.
제가 아직 iptabes에 대해서 제대로 몰라서 알려주신 내용의 의미는 모르겠습니다.

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

이한길의 이미지

merely_c wrote:
이한길 wrote:
그리고 IP주소로 핑테스트를 해보니까 됩니다.
근데 /etc/resolv.conf에 DNS 적어 줬는데 도메인으로 핑하면 안되네요.
언노운호스트라고 나옵니다.

cat /etc/resolv.conf
nameserver 168.126.63.1

이한길 wrote:

아.. 그리구요...
아이피 주소로 웹페이지 열려구 해도 안열리네요...

마찬가지로 위의 네임서버 설정과...
route add default gw 192.168.0.1 eth0 이라고 해주시면
외부로 핑이 나가겠습니다.

지금 제 문제는 아이피로는 외부로 핑이 나가는데
도메인 이름으로는 안됩니다. 그리고 위처럼 지정해주었는데도 그렇지요..
원인을 잘 모르겠습니다.

----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com

박영선의 이미지

혹시 tcp53번을 필터링하는거 아닌가요?

nslookup이나 dig로도 한번 테스트해보시죠.

^^;;

rainmen747의 이미지

마음이 급하실테니까..우선 적합한 스크립을 알려 드리면 ,

iptables -A FORWARD -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

처럼 추가 하시면 바로 해결 되실꺼예요.

이유를 조금 설명 해 보겠습니다.

지금 방화벽으로 님의 머신의

NAT 안의 PC들은 상당부분 패킷이 걸러 지고 있습니다.

특히 tcp/udp 등은 왠만하면 들어오질 못합니다.

한편 ping 은 icmp 라고 하는 비교적 simple 한 프로토콜을

사용하여 물리적 네트웍의 연결만을 맛보기로 보여 주는 것에

불과 하지요.

따라서 ip로 외부를 부르면,에코로 돌아와 주긴하지만

문제는 방화벽을 어렵게 통과한 매우 빈약한 수준의 패캣정보에

불과합니다.ping이 살았다고 하여,

네트웍이 구성되었다고 보기는 너무 성급하다는 야그이지요.

한편 도메인으로 부른다는 것은 엄청난 고급 transaction을 요청하는

것입니다.요청한 호스트명칭 과 ip가 님의 로컬에 남아 있지 않다면,

말그대로 지구한바뀌를 돌며 추적하여야 하는 엄청난 프로세싱입니다.

요점은,님의 머신에 송수신되는 패킷이 필터링되고 있다면

네임 서비스는 정보를 기껏 찾은다음,방화벽 앞에서 무릎을 꿇겠죠.

서두에 적은 iptables의 명령은 filter 테이블중 forward 체인에

한하여 패킷을 몇가지 허용하여 주는 스크립트 입니다.

약간 빗장을 풀어 주는 것이지요.

약간 너무 풀어주는(?)감이 없지 않지만,아마도 님의 방화벽이

최소한 medium 이상으로 설정되어 있는것 같아서(default임)

풀어 줬습니다.난중에 몇가지 공부하신후 걸러 주세요.

댓글 달기

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