마스커레이딩은 되는데 DNS가 문제

eezen의 이미지

페도라5로 업그레이드한 뒤에 보니 nat로 물려서 인터넷을 공유하던 윈도우XP컴퓨터에 문제가 생겼습니다. 마스커레이딩은 되는데 (IP주소로는 문제가 없는데), 이상하게도 DNS 변환이 이루어지지 않는 것입니다. DNS 서버 설정이야 종전 그대로이고 혹시나 해서 리눅스컴퓨터의 네임서버로 설정도 해봤으나..

C:\Documents and Settings\hl>nslookup
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 168.126.63.1: Timed out
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 168.126.63.2: Timed out
*** Default servers are not available
Default Server: UnKnown
Address: 168.126.63.1

> server 192.168.0.2
DNS request timed out.
timeout was 2 seconds.
Default Server: [192.168.0.2]
Address: 192.168.0.2

> server 59.5.2.18
DNS request timed out.
timeout was 2 seconds.
Default Server: [59.5.2.18]
Address: 59.5.2.18

이상은 윈도우쪽 상황이고요,

리눅스에서는 코넷서버든 자체서버든 DNS에 아무 문제 없습니다.

무슨 문제일까요?

리눅스쪽 상황을 추가합니다.

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT ipv6-crypt-- anywhere anywhere
ACCEPT ipv6-auth-- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:5353
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere state NEW udp dpt:netbios-ns
ACCEPT udp -- anywhere anywhere state NEW udp dpt:netbios-dgm
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:netbios-ssn
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:microsoft-ds
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:domain
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
reject-with icmp-host-prohibited

eezen의 이미지

사실 윈도우 컴퓨터도 DHCP로 공인아이피를 받아올 수는 있습니다. 그런데 그 경우에 제어판의 TCP/IP 등록정보에는 별도의 아이피를 설정할 수 있는 메뉴가 보이는데, 거기에 192.168.0.1 주소를 주어도 작동이 되지 않는군요. 아마도 리눅스에서 eth0와 eth0:1로 가상 다바이스를 만들어 사용하는 것과 같은 기능이라 짐작되는데(리눅스는 eth0가 DHCP고 eth0:1이 192.168.0.2입니다), 저게 왜 안 되는지, 그냥 폼으로만 있는 것인지 모르겠습니다.

윈도우쪽에서 이 문제가 해결되면, 결과는 더 좋게 되는 셈인데요... (두 컴퓨터가 인터넷이 되어야 하고 서로 내부 연결도 되어야 하고) 윈도우 문제 질문하는 곳이 아니니 이 정도로 줄이겠습니다. 혹시 잘 아시는 분이 있으면 답 주셔도 되겠지요. :)

wariua의 이미지

상황을 정확하게 이해하지는 못 하고 있습니다만, 윈도에서 DHCP로 주소를 받는 인터페이스에 고정 주소를 더해주는 방법에 대해선 윈도우즈에서 route 문제입니다... 글을 참고하실 수 있습니다.
----
$PWD `date`

$PWD `date`

eezen의 이미지

고맙습니다..

그 글타래에서 링크하신 문서대로 해봤는데
(사실 간단하더군요. 레지스트리에서 IpAddress와 Subnetmask항목을 찾은
다음에 첫 줄에 0.0.0.0이라 되어 있는 것 그냥 두고 다음 줄에 추가하라.
제 경우는 192.168.0.1과 255.255.255.0 뭐 틀릴 데도 없는 것 같은데...)

그런데 안 되더라는 것이죠. 랜카드 내렸다가 올리면 다시 dhcp 주소를 받아오는데
그러면서 에러 메시지가 나옵니다. 연결에 제한이 있다고... 그 상태에서 ipconfig나
route print 로 보면 192라는 글자가 전혀 나타나지 않고... 물론 내부 통신이
안 됩니다. 인터넷은 문제가 없고요.

상황을 다시 정리하면, KT의 소위 FTTH 망의 종단에 모뎀 비슷한 장비가
있고 거기에 랜포트가 4개 있습니다. 그 중 두 개를 사용하는데 하나는 리눅스,
다른 하나는 윈도우XP 홈. 각각 DHCP 로 설정하면 별개의 공인아이피를 받아
인터넷 잘 됩니다. 59.5.2.x 로 받고 마스크는 255.255.255.0으로 나옵니다.

그런데 삼바를 위해서 리눅스에서는 eth0;1에 192.168.0.2를 주었고,
윈도우에서는 DHCP를 사용하지 않고 그냥 192.168.0.1만 주었더니
그 모뎀 비슷한 장비가 허브 역할도 하므로 물리적인 연결은 그대로 두고 리눅스
에서 마스커레이딩만 해주면 인터넷이 되었던 상황입니다.
그런데 페도라 업그레이드 후에 갑자기 인터넷이 되지 않아(윈도우컴) 확인해
보니 아이피 주소로는 다 접속이 되는데 도메인 이름으로는 아무데도 접속이 되지
않는 상태가 되어 있습니다. (처음 질문은 이걸 해결해 보려는 것이었는데 아직
아무런 힌트를 얻지 못하고 있습니다.)

그러면 둘 다 공인아이피를 사용하면서 동시에 내부아이피를 가질 수 있는가 하는
두번째 질문에 친절한 답글을 얻었습니다만, 이상하게도 해결이 되지 않더라
하는 상황이네요.

지금 이 답글을 적으면서 둘러가는 길 하나를 발견했습니다. 삼바 설정에서
192.168.0. 외에 59.5.2.을 추가했더니 일단 접속은 되는군요. 그러나 윈도우쪽에서는
이걸로도 그럭저럭 쓰겠지만, 리눅스쪽에서는 매우 불편하군요.
보안문제는 또 어떤지도 모르겠고요.

아무래도 마스커레이딩 해결책을 찾든지, 윈도우에서 아이피 두 개를 사욯하는
방법을 찾든지 해야할 것 같습니다. 물론 필요할 때마다 윈도우쪽 설정을 바꿔주는
가장 원시적인 방법은 있으니까 그리 절박하다고 할 수는 없는 문제입니다. :)

윤봉환의 이미지

첫째, 이럴 때에는 tcpdump로 트레이싱해보면 답이 금방 나옵니다.

둘째, eezen님이 말한 '모뎀 비슷한 장비'에서 192.168.0.1 IP를 사용하지 않을까 하는 의심이 드네요. arping 으로 DAD 테스트를 해보세요. 59.5.2.를 추가했더니 된다면, 이게 가능성이 가장 높겠네요. 그렇다면 172.16.0.0/12 나 10.0.0.0/8 을 사설 네트웍에서 써야겠군요.

放下着-----
내려놓으려는 마음도 내려놓기

放下着-----
내려놓으려는 마음도 내려놓기

eezen의 이미지

tcpdump는 제겐 너무 어려운 벽이군요. 매뉴얼을 훑어봐도 감이 안 오네요...

그리고 192.168.0.1로 주소를 할당하면(윈도우컴), 뭐가 충돌하는 것은
아니고, 단지 윈도우컴에서 보낸 DNS 쿼리가 응답을 받지 못하는
상황입니다. (맨 처음 질문 글에...) 아이피주소로는 안 되는 일이
없습니다. ---- 문제는 이것이 윈도우쪽 문제인지, 리눅스의 iptables
문제인지도 모른다는 거죠. SElinux는 꺼놓았고 리눅스쪽 방화벽 상황은
맨 처음 글에 있습니다.

덧붙입니다: 59.5.2. 은 DHCP로 받아오는 주소 대역입니다.

wariua의 이미지

iptables 규칙은 nat 테이블의 OUTPUT 체인을 제외하면 모두 허용하고 있으니 아마 문제가 아니겠지요... tcpdump 사용은 간단하게 쓰자면 꽤 쉽습니다.

# tcpdump -n port domain

하면 DNS 패킷을 살펴봅니다. 192.168.0.0/24 네트워크의 호스트만 보고 싶으면
# tcpudmp -n host 192.168.0

이고, 필요하면 "and"나 "or"로 조건을 이어줄 수도 있습니다. 가령
# tcpdump -n icmp and host 192.168.0 or port domain

이라고 하면 192.168.0.0/24의 호스트가 보내거나 받는 ICMP 패킷, 또는 DNS 요청/응답 패킷을 보여줍니다.

일단은 윈도 PC에서 보낸 DNS 패킷이 차단되지 않고, 마스커레이딩 잘 되면서 리눅스 장비를 거쳐서 오가는지를 확인해 보실 수 있습니다.
----
$PWD `date`

$PWD `date`

eezen의 이미지

윈도우컴을 192.168.0.1로 설정한 상태에서 kldp 접속을 시도한 순간의
tcpdump -n port domain 결과입니다.
저는 봐도 뭔지 잘 모르므로 옮겨봅니다.

23:17:04.040373 IP 192.168.0.1.1032 > 168.126.63.1.domain: 62834+ A? kldp.org. (26)
23:17:05.040408 IP 192.168.0.1.1032 > 168.126.63.2.domain: 62834+ A? kldp.org. (26)
23:17:06.040490 IP 192.168.0.1.1032 > 168.126.63.1.domain: 62834+ A? kldp.org. (26)
23:17:08.040969 IP 192.168.0.1.1032 > 168.126.63.1.domain: 62834+ A? kldp.org. (26)
23:17:08.041051 IP 192.168.0.1.1032 > 168.126.63.2.domain: 62834+ A? kldp.org. (26)
23:17:11.408847 IP 192.168.0.1.4670 > 168.126.63.1.domain: 46194+ A? kldp.org. (26)
23:17:12.041234 IP 192.168.0.1.1032 > 168.126.63.1.domain: 62834+ A? kldp.org. (26)
23:17:12.041312 IP 192.168.0.1.1032 > 168.126.63.2.domain: 62834+ A? kldp.org. (26)
23:17:12.408372 IP 192.168.0.1.4670 > 168.126.63.2.domain: 46194+ A? kldp.org. (26)
23:17:13.408672 IP 192.168.0.1.4670 > 168.126.63.1.domain: 46194+ A? kldp.org. (26)
23:17:15.408713 IP 192.168.0.1.4670 > 168.126.63.1.domain: 46194+ A? kldp.org. (26)
23:17:15.408790 IP 192.168.0.1.4670 > 168.126.63.2.domain: 46194+ A? kldp.org. (26)
23:17:18.380573 IP 59.5.2.18.33987 > 168.126.63.1.domain: 10240+ A? 192.168.0.255,. (32)
23:17:18.383185 IP 168.126.63.1.domain > 59.5.2.18.33987: 10240 NXDomain 0/1/0 (107)
23:17:18.383323 IP 59.5.2.18.33987 > 168.126.63.1.domain: 36904+ A? 192.168.0.255,.homeip.net. (43)
23:17:18.386115 IP 168.126.63.1.domain > 59.5.2.18.33987: 36904 NXDomain 0/1/0 (104)
23:17:19.416274 IP 192.168.0.1.4670 > 168.126.63.1.domain: 46194+ A? kldp.org. (26)
23:17:19.416361 IP 192.168.0.1.4670 > 168.126.63.2.domain: 46194+ A? kldp.org. (26)
23:17:21.306743 IP 192.168.0.1.1032 > 168.126.63.1.domain: 18301+ A? kldp.org. (26)
23:17:22.306233 IP 192.168.0.1.1032 > 168.126.63.2.domain: 18301+ A? kldp.org. (26)

59.5.2.18은 현재 리눅스컴이 받은 주소입니다.
뭔가 이루어지는 것이 있어보이긴 하는데, 윈도우에서는 도메인으로는 접속할
수가 없습니다.
터미널(명령창인가)에서 nslookup으로 시도해보면 맨 처음
질문글에서처럼 timeout 에러가 나오고
이때 리눅스에서 tcpdump로 보면(-v 옵션을 더 주어 보았습니다)

23:41:24.577218 IP (tos 0x0, ttl 128, id 62050, offset 0, flags [none], proto: UDP (17), length: 71) 192.168.0.1.4345 > 168.126.63.1.domain: 1+ PTR? 1.63.126.168.in-addr.arpa. (43)
23:41:26.583693 IP (tos 0x0, ttl 128, id 62051, offset 0, flags [none], proto: UDP (17), length: 71) 192.168.0.1.4346 > 168.126.63.2.domain: 2+ PTR? 2.63.126.168.in-addr.arpa. (43)
23:41:28.587094 IP (tos 0x0, ttl 128, id 62052, offset 0, flags [none], proto: UDP (17), length: 54) 192.168.0.1.4347 > 168.126.63.1.domain: 3+ A? kldp.org. (26)
23:41:29.196702 IP (tos 0x0, ttl 64, id 37527, offset 0, flags [DF], proto: UDP (17), length: 60) 59.5.2.18.33987 > 168.126.63.1.domain: 17616+ A? 192.168.0.255,. (32)
23:41:29.198951 IP (tos 0x0, ttl 25, id 12554, offset 0, flags [none], proto: UDP (17), length: 135) 168.126.63.1.domain > 59.5.2.18.33987: 17616 NXDomain 0/1/0 (107)
23:41:29.199093 IP (tos 0x0, ttl 64, id 37528, offset 0, flags [DF], proto: UDP (17), length: 71) 59.5.2.18.33987 > 168.126.63.1.domain: 39568+ A? 192.168.0.255,.homeip.net. (43)
23:41:29.201336 IP (tos 0x0, ttl 25, id 12557, offset 0, flags [none], proto: UDP (17), length: 132) 168.126.63.1.domain > 59.5.2.18.33987: 39568 NXDomain 0/1/0 (104)
23:41:30.590233 IP (tos 0x0, ttl 128, id 62053, offset 0, flags [none], proto: UDP (17), length: 54) 192.168.0.1.4348 > 168.126.63.1.domain: 4+ A? kldp.org. (26)

역시 알아볼 수 없는... (중간의 .homeip.net는 리눅스컴이 사용하는 dyndns 도메인이름입니다. 호스트이름이 tulbo.homeip.net입니다)

댓글 달기

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