iptables 마스 쿼 레이 딩은 어떻게 다른 로컬 서브넷에 액세스 할 수 있습니까?


0

PPPoE를 통해 인터넷 연결을 설정하기 위해 Linksys 라우터 ( / 24 서브넷 내부의 IP 192.168.1.1 )가 ADSL 모뎀 ( / 24 서브넷 내부의 IP 10.0.0.138 )에 연결되어 있습니다. 라우터에 연결된 PC 중 하나에서 모뎀의 웹 인터페이스에 액세스하려면 라우터에서 다음 명령을 실행해야합니다.

ip addr add 10.0.0.1/24 dev vlan1 brd +
iptables -I POSTROUTING -t nat -o vlan1 -d 10.0.0.138 -j MASQUERADE

내가 알기로는 라우터가 IP 10.0.0.138을 자체 192.168.1.0/24 서브넷의 일부가 아니기 때문에 외부 주소로 가정하기 때문에 이것이 필요합니다.

그러나이 두 줄은 정확히 무엇을하고 있습니까? 첫 번째는 vlan1 인터페이스 (기본적으로 라우터의 WAN 포트)에 두 번째 IP 주소를 할당하는 것 같습니다. 두 번째는 발신 IP 패킷의 소스 주소를 수정합니다. 그러나 기본적으로 홈 라우터가 정확히 무엇입니까? 를 사용하여 iptables -t nat -L이미 규칙이 있음을 발견했습니다.

target      prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

이제 두 번째 명령은

MASQUERADE  all  --  anywhere             10.0.0.138

이 표에 있지만, 이것은 위의 규칙의 더 구체적인 버전이 아니므로 중복되지 않습니까?

누군가 여기에 무슨 일이 일어나고 있는지에 대한 세부 사항을 설명 할 수 있다면 좋을 것입니다!


출력 ip route:

87.186.225.71 dev ppp0 프로토 커널 범위 링크 src [my public IP]
10.0.0.0/24 dev vlan1 프로토 커널 범위 링크 src 10.0.0.1
192.168.1.0/24 dev br0 프로토 커널 범위 링크 src 192.168.1.1
127.0.0.0/8 개발 범위 링크
87.186.225.71 dev ppp0을 통한 기본값

출력 ip addr:

1 : Lo : MTU 16436 큐 디스크 Noqueue
    링크 / 루프백 00 : 00 : 00 : 00 : 00 : 00 brd 00 : 00 : 00 : 00 : 00 : 00
    inet 127.0.0.1/8 brd 127.255.255.255 범위 호스트 lo
2 : eth0 : mtu 1500 qdisc pfifo_fast qlen 1000
    링크 / 에테르 00 : 13 : 10 : 2f : fe : 48 brd ff : ff : ff : ff : ff : ff
3 : eth1 : mtu 1500 qdisc pfifo_fast qlen 1000
    링크 / 에테르 00 : 13 : 10 : 2f : fe : 4a brd ff : ff : ff : ff : ff : ff
4 : vlan0 : MTU 1500 큐 디스크 Noqueue
    링크 / 에테르 00 : 13 : 10 : 2f : fe : 48 brd ff : ff : ff : ff : ff : ff
5 : vlan1 : mtu 1500 qdisc noqueue
    링크 / 에테르 00 : 13 : 10 : 2f : fe : 49 brd ff : ff : ff : ff : ff : ff
    inet 10.0.0.1/24 brd 10.0.0.255 범위 글로벌 VLAN1
6 : BR0 : MTU 1500 큐 디스크 Noqueue
    링크 / 에테르 00 : 13 : 10 : 2f : fe : 48 brd ff : ff : ff : ff : ff : ff
    inet 192.168.1.1/24 brd 192.168.1.255 스코프 글로벌 br0
...
23 : ppp0 : mtu 1492 qdisc pfifo_fast qlen 3
    링크 / ppp
    inet [내 공개 IP] 피어 87.186.225.71/32 brd [내 공개 IP] 범위 글로벌 ppp0

설정에 대한 추가 정보가 필요합니다. 의 출력을 보여주십시오 ip addr, routel하고 iptables-save.
BatchyX

모뎀이 10/24LAN 포트를 통해 라우팅 된 서브넷 만으로 구성 되어있을 수 있으므로의 소스 주소로 라우터에 액세스 192.168.1.0/24하려고하면 응답을 해당 WAN 포트로 라우팅하거나 패킷을 버릴 수 있습니다. 인터넷에 액세스하는 것을 제외하고, 라우터는 이미 10/24범위 내에있는 주소를 가지고 있기 때문에 조금 이상합니다. 이 MASQUERADE규칙은 언뜻보기에는 불필요 해 보이지만 iptables -L큰 차이를 만들 수있는 몇 가지 옵션을 숨기는 것으로 알려져 있습니다.
BatchyX

나는 어느 쪽도 포함하지 않는 수정 된 토마토 펌웨어를 실행하는거야 routeliptables-save죄송합니다. 10.0.0.0/24PPPoE가 IP 계층 아래에 ​​있으므로 IP를 사용하지 않기 때문에 라우터 에 인터넷에 액세스 할 수 있는 모뎀 범위 의 IP가 이미 있다고 생각 하지 않습니다. 설명하려고하는 이 링크 를 찾았습니다 . 아직 확실하지 않은 것은 현재 여러 개의 IP ( 및 ) 가 있으므로 MASQERADE규칙에 의해 어떤 IP가 발신 패킷으로 복사되는지 입니다. vlan1192.168.1.110.0.0.1
ph4nt0m

분명히 MASQUERADE서브넷에 다음 홉의 주소가 포함 된 주소 또는 이와 유사한 주소를 선택하십시오 (원하는 소스 주소를 선택하지 않는 이유는 확실하지 않습니다). 그래서 의미 10.1합니다 10/24. 를 routel사용할 수없는 경우 ip rule및 의 출력을 표시하십시오 ip route. 또한의 출력을 보여줍니다 iptables -t nat -Siptables -S교체iptables-save
BatchyX

불행히도, ip rule작동하지 않으며의 -S주장을 iptables알 수 없습니다. 펌웨어에는 iptables v1.3.8이 포함되어 있습니다. 아마 적어도 ip routeip addr어떤 도움이되지, 그래서 주요 포스트에 출력을 추가했다.
ph4nt0m
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.