http://modem/을 통해 연결하려고 하면 모뎀이 로그온 자격 증명을 거부합니다. http://로 연결하면 잘 작동합니다./

http://modem/을 통해 연결하려고 하면 모뎀이 로그온 자격 증명을 거부합니다. http://로 연결하면 잘 작동합니다./

이건 진짜 버거입니다 :)

내 모뎀은 Linux 방화벽/라우터/게이트웨이에 연결된 ZTE ZXHN H108L입니다. 게이트웨이는 DNS, DHCP, VPN 및 투명 PROXY가 실행되는 Slackware 14.0 시스템입니다. 게이트웨이에는 2개의 하드웨어 NIC가 있습니다. eth1모뎀(192.168.231.117)에 연결되어 있고, eth0인트라넷(192.168.112.0/24)에 연결되어 있습니다.

저는 DNS를 사용하여 여러 인트라넷 및 VPNnet 호스트에 이름을 지정합니다. 모뎀의 이름은 "modem.skails.office"(또는 이 인트라넷의 PC에 있는 경우 그냥 "모뎀")입니다. 에서 /var/named/skails.office.hosts:

modem                   A       192.168.231.117

nslookup인트라넷의 모든 PC에서 모뎀 주소를 올바르게 확인합니다.

root@stargaze:~# nslookup modem
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   modem.skails.office
Address: 192.168.231.117

root@stargaze:~# nslookup modem.skails.office
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   modem.skails.office
Address: 192.168.231.117

그래서 게이트웨이의 브라우저(firefox)에서 모뎀에 액세스하려고 하면 http://192.168.231.117/. 자격 증명을 제공하고 정상적으로 로그온합니다.

http://modem/주소 또는 을(를) 발행하여 동일한 작업을 시도하면 http://modem.skails.office/여전히 로그온 창이 표시되지만 내 자격 증명은 허용되지 않습니다. 여기서 무엇이 문제가 될 수 있는지 정말 모르겠습니다.

나는 tcpdump -i eth1 host modem and port 80로그온하고 상태 페이지를 가져오려는 시도의 성공과 실패를 기록하곤 했습니다.

  1. 성공적인 tcpdump wget --user admin --password 1234 "http://192.168.231.117/status/status_deviceinfo.htm" -O -

192.168.231.117:80에 연결 중... 연결되었습니다.
HTTP 요청이 전송되었으며 응답을 기다리는 중... 401 무단
192.168.231.117:80에 대한 기존 연결을 재사용하고 있습니다.
HTTP 요청이 전송되었으며 응답을 기다리는 중... 200 OK
길이: 지정되지 않음 [text/html]
...

  1. 실패한 tcpdump wget --user admin --password 1234 "http://modem/status/status_deviceinfo.htm" -O -

모뎀(모뎀) 확인 중... 192.168.231.117
모뎀에 연결 중(모뎀)|192.168.231.117|:80... 연결되었습니다.
HTTP 요청이 전송되었으며 응답을 기다리는 중입니다... 401 무단
기존 연결을 재사용 중입니다.모뎀:80.
HTTP 요청이 전송되었으며 응답을 기다리는 중... 401 무단
인증에 실패했습니다.

그것으로 무엇이든 만들 수 있나요? 제가 포함할 생각이 없었던 다른 데이터가 필요합니까? 이 문제를 어떻게 더 자세히 조사할 수 있나요?

답변1

모뎀의 웹 서버는 HostHTTP 헤더에 있는 IP 이외의 것을 처리하도록 설계되지 않았으므로 정의되지 않은 동작이 발생하며 이 경우 해당 헤더에 IP가 아닌 다른 것을 보낼 때 인증이 실패함을 의미합니다 Host.

일반적으로 가상 호스트(동일한 IP를 가리키는 여러 도메인에서 여러 사이트를 호스팅하고 해당 Host헤더를 사용하여 요청된 사이트를 알 수 있음)를 사용하지 않는 한 해당 헤더를 완전히 무시해야 합니다. 펌웨어는 분명히하지 않았습니다. 그들이 실제로 (불필요하게) 가상 호스트를 사용하고 있다고 해도 놀라지 않을 것입니다. 그래서 Host라우터의 IP에 설정된 특정 헤더만 인증할 수 있습니다. 왜냐하면 다른 모든 것은 해당 가상 호스트와 일치하지 않기 때문입니다.

이름은 그것과 아무 관련이 없습니다. 단지 컬/wget이 해당 DNS 이름을 기반으로 올바른 호스트 헤더를 자동으로 설정한다는 것뿐입니다. 해당 헤더를 제거하거나 무시하고 모뎀의 IP로 다시 설정할 수 있다면 제대로 작동할 것입니다( wget --header="Host:" ...헤더 제거에 사용).

관련 정보