Android 테더링할때 usb0와 NIC는 어떻게 연결되어있는건가요?

rpit1412의 이미지


말그대로 안드로이드 테더링이나 리버스테더링할때 usb0가 생기잖아요

그 usb0를 통해서 나온 패킷이 NIC를 통해서 인터넷으로 연결되는데

어떤 메카니즘으로 usb0에서 NIC 로 패킷이 통신되는지 궁금합니다

관련자료나 조언 부탁드립니다

chanik의 이미지

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를 켜려면 이전에 하신 질문의 답변을 참고하십시오.
그런데, 궁금해하시는 점이 이런 것이 맞는지 모르겠군요.

rpit1412의 이미지

댓글 달려있는걸 미처 확인을 하지 못했네요 ㅎㅎ

근데 NAT나 패킷 포워딩 되는 규칙같은건 어디에서 확인할수 있나요?

안드로이드에 usb를 꽂아서 테더링을 켜면 저절로 usb0가 세팅되고

포워딩되는 규칙같은건

iptables -t nat -L 로 확인해봤는데

POSTROUTING 에 MASQUERADE 되는거 1개밖에 없는데

이것만으로도 포워딩규칙이 충분히 선건가요?

chanik의 이미지

그 환경에서 아래와 같이 filter 테이블과 nat 테이블의 규칙을 확인하셔도 될 것이고,

$ sudo iptables -L
$ sudo iptables -L -t nat

아래와 같은 식으로 현재 설정된 규칙을 덤프해서 보시면 더 정확할 것입니다.

$ sudo iptables-save > nat.rules

이전에 하신 질문의 답변도 참고하시고요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.