usb0은 (가상의 장치이지만) 보통의 NIC처럼 생각하시면 됩니다.
그냥 usb0라는 랜카드를 통해 안드로이드 장치에 연결되어 있는 셈입니다.
안드로이드 --- (usb0) Linux PC (eth0) --- 인터넷
위와 같은 리버스테더링 상황을 예로 들자면,
안드로이드 장치에서 인터넷상의 kldp.org로 접근을 하게 되면 대략 아래와 같은 일이 일어납니다.
1. 패킷이 안드로이드 장치로부터 usb0를 통해 Linux PC로 들어감
2. 패킷의 목적지IP가 Linux PC가 아닌 인터넷 상의 주소이므로 Linux 커널은 eth0 쪽으로 패킷포워딩.
3. 커널에서는 eth0으로 패킷을 내보내기 전에 NAT에 의한 송신자IP 변경이 일어남.
4. 패킷은 인터넷상의 여러 라우터를 거쳐 kldp.org로 도착하고, kldp.org에서는 응답패킷을 내보냄.
5. 응답패킷 역시 여러 라우터를 거쳐 eth0을 통해 Linux PC에 도착
6. Linux 커널은 우선 응답패킷의 목적지IP를 내부IP로 변조하는 NAT 작업을 함.
7. 커널은 주소변경된 응답패킷을 usb0 쪽으로 패킷포워딩함.
8. 안드로이드 장치에서 응답패킷 수신.
* 3.의 NAT는 SNAT(Source NAT)라 하고 6.의 NAT는 DNAT(Destination NAT)라고 합니다.
이런 작업을 위해 커널은 NAT 테이블을 관리합니다.
* 안드로이드 장치 및 kldp.org서버는 중간에 NAT에 의한 주소변경이 일어났다는 사실을 느끼지 못합니다.
Linux의 패킷포워딩과 NAT를 켜려면 이전에 하신 질문의 답변을 참고하십시오.
그런데, 궁금해하시는 점이 이런 것이 맞는지 모르겠군요.
usb0은 (가상의 장치이지만) 보통의 NIC처럼
usb0은 (가상의 장치이지만) 보통의 NIC처럼 생각하시면 됩니다.
그냥 usb0라는 랜카드를 통해 안드로이드 장치에 연결되어 있는 셈입니다.
위와 같은 리버스테더링 상황을 예로 들자면,
안드로이드 장치에서 인터넷상의 kldp.org로 접근을 하게 되면 대략 아래와 같은 일이 일어납니다.
1. 패킷이 안드로이드 장치로부터 usb0를 통해 Linux PC로 들어감
2. 패킷의 목적지IP가 Linux PC가 아닌 인터넷 상의 주소이므로 Linux 커널은 eth0 쪽으로 패킷포워딩.
3. 커널에서는 eth0으로 패킷을 내보내기 전에 NAT에 의한 송신자IP 변경이 일어남.
4. 패킷은 인터넷상의 여러 라우터를 거쳐 kldp.org로 도착하고, kldp.org에서는 응답패킷을 내보냄.
5. 응답패킷 역시 여러 라우터를 거쳐 eth0을 통해 Linux PC에 도착
6. Linux 커널은 우선 응답패킷의 목적지IP를 내부IP로 변조하는 NAT 작업을 함.
7. 커널은 주소변경된 응답패킷을 usb0 쪽으로 패킷포워딩함.
8. 안드로이드 장치에서 응답패킷 수신.
* 3.의 NAT는 SNAT(Source NAT)라 하고 6.의 NAT는 DNAT(Destination NAT)라고 합니다.
이런 작업을 위해 커널은 NAT 테이블을 관리합니다.
* 안드로이드 장치 및 kldp.org서버는 중간에 NAT에 의한 주소변경이 일어났다는 사실을 느끼지 못합니다.
Linux의 패킷포워딩과 NAT를 켜려면 이전에 하신 질문의 답변을 참고하십시오.
그런데, 궁금해하시는 점이 이런 것이 맞는지 모르겠군요.
댓글 달려있는걸 미처 확인을 하지 못했네요 ㅎㅎ
댓글 달려있는걸 미처 확인을 하지 못했네요 ㅎㅎ
근데 NAT나 패킷 포워딩 되는 규칙같은건 어디에서 확인할수 있나요?
안드로이드에 usb를 꽂아서 테더링을 켜면 저절로 usb0가 세팅되고
포워딩되는 규칙같은건
iptables -t nat -L 로 확인해봤는데
POSTROUTING 에 MASQUERADE 되는거 1개밖에 없는데
이것만으로도 포워딩규칙이 충분히 선건가요?
그 환경에서 아래와 같이 filter 테이블과 nat
그 환경에서 아래와 같이 filter 테이블과 nat 테이블의 규칙을 확인하셔도 될 것이고,
아래와 같은 식으로 현재 설정된 규칙을 덤프해서 보시면 더 정확할 것입니다.
이전에 하신 질문의 답변도 참고하시고요.
댓글 달기