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.