DD-WRT : 포트 전달이 LAN 내부에서 시작된 요청에 적용되도록하는 방법은 무엇입니까?


26

라우터의 원래 펌웨어를 사용하여 포트 80에서 LAN의 서버로 포트 전달을 정의했으며 외부 동적 DNS 서비스와 함께 사용했습니다.

이제 DD-WRT로 업그레이드했으며 포트 전달 은 LAN 외부 에서 외부 IP 로의 요청에만 작동합니다 . LAN 내부에서 내부 IP를 통해서만 서버에 액세스 할 수 있습니다.

LAN 내부 에서도 외부 IP (및 동적 외부 IP에 연결된 도메인 이름)에 올바르게 액세스 하려면 어떻게해야합니까?

표준 DD-WRT 정의로 달성하는 방법을 찾고 싶지만 iptables를 사용하는 것은 문제가 아닙니다.

답변:


25

최근 DD-WRT 빌드의 버그 인 것 같습니다.

iptables를 사용하십시오.

iptables -t nat -I POSTROUTING -o br0 -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE

(특정 LAN에 따라 서브넷을 변경하십시오)

에서 http://hax.at/text/41


그것은 분명하지 않았다! 매력처럼 일했다 :)
— Jay

이 명령을 시작 명령으로 설정하고 라우터를 재부팅했지만 변경 사항이 없습니다. 여전히 작동하지 않습니다.
— Timwi

나를 위해 일했다. 대단히 감사합니다. 이제 내 DD-WRT 라우터의 내부 네트워크에서 IP에 할당 된 ddn에 액세스 할 수 있습니다.
— nusi

3
이것은 나를 위해 일했지만 시작 스크립트가 아닌 방화벽 스크립트로 저장 한 경우에만 효과적이었습니다.
— Jarett Millard

@Timwi-Jarett이 언급했듯이 "Startup"섹션이 아닌 "Firewall"섹션에 이것을 배치해야했습니다.
— dan_linder

4

UrEl의 답변을 바탕으로 : DD-WRT 포럼iptables 에서 추가 조정없이 복사하여 붙여 넣을 수 있는 자체 구성 스크립트를 찾을 수 있습니다 .

insmod ipt_mark 
insmod xt_mark 
iptables -t mangle -A PREROUTING -i ! `get_wanface` -d `nvram get wan_ipaddr` -j MARK --set-mark 0xd001 
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark 
iptables -t nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE 

Jarett이 언급했듯이이 스크립트 는 시작 스크립트가 아니라 방화벽 스크립트 로 사용해야 합니다.


이 솔루션은 SIP 전화를 연결할 수 없기 때문에 UrEI 솔루션보다 나에게 더 효과적이었습니다.
— jamix

이것과 @UrlEl의 규칙의 차이점은 무엇입니까 (동적 인터페이스와 IP 주소를 동적으로 얻는 것 외에도)?
— Piotr Dobrogost

1

보안-> 방화벽 탭에서 "필터 WAN NAT 리디렉션"을 비활성화하십시오. 도움말 설명에서 :

WAN NAT 리디렉션 필터링 LAN의 호스트가 라우터의 WAN 주소를 사용하여 LAN의 서버에 연결하지 못하도록합니다 (포트 리디렉션을 사용하여 구성된).


이미 비활성화되어 있습니다 (기본적으로). 다른 아이디어가 있습니까?
— UrEl

LAN에서이 설정은 정확히 차이를 만드는 것입니다. 어떤 빌드를 사용하고 있습니까? 어쩌면 당신은 두 번 확인하여 포트 포워딩을해야한다 - 아마 뭔가 잘못 사용하면 (? 어쩌면 IP를 따라서 포트 포워딩을 깨는, 외부 및 내부 액세스 사이에 변경) 놓친가있다
— 토비아스 Plutat

나는 16994를 사용하고 있습니다. 그 동안 나는 이것을 발견했습니다 : hax.at/text/41
— UrEl

오, DD-WRT 버기 릴리스를 좋아하는 방법! 정적 임대의 호스트 이름에는 알파벳 문자 만 포함되어야한다는 것을 알 때까지는 오랜 시간이 걸리던 클라이언트와의 연결을 설정합니다. Arrgh!)
— Tobias Plutat

1

실제 문제는 DNS A 레코드에 대한 두 가지보기가 필요하다는 것 같습니다. 외부의 동적 DNS는 포트 80을 로컬 호스트로 전달하는 네트워크 공용 IP를 가리 킵니다. dnsmasq에 항목을 추가하면 A 레코드가 동일한 정규화 된 도메인 이름을 로컬 호스트의 로컬 호스트 ip로 가리키는 것입니다. 서비스 페이지 / 추가 dnsmasq 옵션에서 다음을 추가하여이를 수행 할 수 있습니다.

 address=/www.mydomain.com./xx.xx.xx.xx

xx를 로컬 ip로 바꾸고 도메인 이름을 도메인 이름으로 바꾸십시오. 후행 점을 잊지 마십시오. 그렇지 않으면 로컬 도메인 이름이 추가됩니다.


이것이 내가 한 일이며 작동합니다! 그러나 특정 포트에 대해이 작업을 수행 할 수 있습니까? 포트를 단일 컴퓨터로 전달하는 경우에만 작동합니다. 여러 컴퓨터로 포트를 전달하는 경우 작동하지 않습니다.
— rinogo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.