  ProxyARP ̎gpɊւ鏬Ș_ 1994/12/05 

  Al Longyear <longyear@netcom.com> 

  { : 쓇 _ (kei@sm.sony.co.jp)
  Z     : x]    (shorie@ibm.net)
             V v  (k957134@sci.u-ryukyu.ac.jp)
              Y  (nakano@apm.seikei.ac.jp)

  == ҂ ==
  ́ALinux MINI-HOWTO ́AProxy-ARP ̖|łB
  Ӗ܂Ae͂B
  ܂AAƂ킩₷ĂȂǂ܂A
  Ж҂܂ŃtB[hobN肢v܂B
  ==============

  I. Cg_NV
  ̃hLg Linux  PPP  SLIP T[ofoCXƂƂ
  vNV ARP (Address Resolution Protocol) gƍlĂl
  ΏۂɂďĂ܂B
  ̕ł́AvNV ARP  ugracious ARPv (ẑ悢 ARP)Ȃǂ
  Ăł邱Ƃ܂B
  vNV ARP gƂv͂悭o܂BꂪgȂꍇA
  \tgEGA̕sǂƍlAȂgȂȂĂ܂̂낤A
  ƂԂlB܂B

  ̃hLgƂȂāAvNV ARP ͂ǂ̂悤ȂƂɗLpŁA
  ǂ̂悤ȂƂɂ͎gȂĂ悢̂悭Ă炦悤
  Ă܂B

  vNV ARP gƁAu(vNV)T[ovɂoHe[u
  ύX΁ÃVXeł͌oHe[uύXKv܂B
  ̂Ƃ́A[gVXe̓Iȃlbg[Nڑ\ɂȂ
  ƂӖĂ܂B

  ŁAuT[ovƌĂł̂́AӖł͌肩܂B
  TCP/IP ́AsA[c[sA[(Γ)̃lbg[NłB
  ̃VXeł́AT[o[񋟂邱ƂŁAuLvA
  NCAg͂upv܂ATCP/IP ɂ́A̎
  NCAg^T[o[֌W͂܂B
  Ƃ͂AudbRs[^vT[oƌĂсA
  udb˂Rs[^vNCAgƌĂԂ͕̂֗łˁB

  Linux ̃lbg[N\tg vNV ARP 𒼐ڃT|[gĂ܂
  ̂ŁÃVXeŎgĂ proxyarpd ̂悤ȓʂȃf[
  ͕Kv܂B

  PPP T|[gR[hipppdjƁASLIP T|[gR[hȉ
  ȂƂAdip-urij̗ proxy ARP T|[gĂ͂łB
  ɉAlbg[NpvO ARP oHe[uǗA
  \邱Ƃł͂łB

  vNV ARP ǂ̂悤ɓ삵AǂȎɎĝ𗝉
  ߂ɂ́AʓIɃlbg[Nǂ̂悤ɋ@\̂ɂ
  {IKvłB
  ȉ3̏͂ł TCP/IP lbg[Nǂ̂悤ɋ@\A[eBO
  ǂɓ삷̂AȒPɏqׂ܂B

  II. n[hEGA猩lbg[N

  C[Tlbgg[NOglbg[Nׂ͂ MAC
  (Media Access Control) AhXgĎĂ܂B
  ͂ꂼ̃Rg[[Ɋ蓖Ăꂽn[hEGAAhX
  łAꂼ MAC AhX͐EŗB(unique)̂̂łB
  ̓Rg[[̃[J蓖Ă܂B
  \tgEGAɂĕύX邱Ƃ\łAʓIȈӖł
  [ᔽłB

  IP AhX uARP LbVv ƌĂ΂A\tgEGA̓ʂ
  e[uɂ MAC AhXɕϊ܂B
  lbg[N\tgA IP pPbgw肳ꂽAhXɑ鎞
  ɂ́AMAC AhXm邽߂ɂ̃LbV܂B
  LbV̒ɂȂꍇɂ́A IP AhX MAC AhX
  ɕϊ邽߂ɁAlbg[NɐڑĂ邷ׂẴVXe
  ΂ēȗv𔭍s܂B
  ꂪ ARP (Address Resolution Protocol)vƌĂ΂Ă̂łB

  ARP vɑ΂Ă ɑΉMAC AhXԂ܂B
   MAC AhX́Aɂ ARP gȂčςނ悤ɁALbV
  ɒ~܂B

  vNV ARP ͂̎dg݂gāA[gڑ܂邱Ƃ
  ł킯łB

  LbV̒̃Gg[폜郋[܂A
  hLgł͂ɂĂ͐G܂BɊւĂ
  IP lbg[NɊւhLgQƂĉB

  (g[NO͊JŁAeXgx[Xł͗p\łA
  Linux ̈ʓIȃlbg[N}̂ƂӖł͂͂C[Tlbg
  łBł炱AuC[TlbgvƂtg܂B
  l̋@\̓g[NOłg܂Bg[NO
  \[X[eBOɊւȂB)

  III. vNV ARP gR

  ړÍAЂƂ̃lbg[NA_v^ɑ΂āA2ȏ
  IP AhX蓖Ă邱Ƃɂ܂B
  ́AC[TlbgRg[̃n[hEGAAhXɑΉA
  ǉ IP AhX̃Gg[ ARP LbVɐ邱Ƃ
  ܂B
  ɂāA IP AhXn[hEGA(MAC)AhXɕϊ
  ARP vɑ΂ Linux VXe͂܂邱Ƃł킯
  łB

  IV. TCP/IP [eBO

  [OĂƂ肵܂Ał́AuXpjO-c[v
  [eBOɂďqׂĂAIP pPbǵu\[X-[eBOv
  ł͂܂B
  g[NOł̓\[X[eBOg܂A IP 
  \[X[eBOł͂ȂAig[NÓjMAC wōs
  ̂łB
  g[NO MAC \[X[eBOsĂ̂́Aꂪ
  g[NOɂpPbg̔zɕKvłB
  ʓIɂ IP \[X[eBOg͐ł܂B]

  vNV ARP ɂĂƏڂm邽߂ɂ́AIP pPbg
  lbg[Nłǂ̂悤Ƀ[eBÔmKv܂A
  ł͂܂ڂqׂ͂܂B
  ڂm肽ɂ́A[ꂽA̖{܂B
  ({łARFC hLgǂ݂B)

  IP pPbǵAꂪoRlbg[N̂ꂼ̒iK
  [eBO܂Bꂼ̃zXgA[^[AQ[gEGC
  ́AꂼꂪoHe[ũRs[LA
  ƂÂĂꂼ IP pPbgǂɑ΂悢肵܂B

  [eBÓAuIP lbg[Nv gčsȂ܂B
  ꂼ̃lbg[NC^[tF[Xɂ́Aj[N IP
  lbg[NƁAIP AhXAlbg}XN蓖ĂĂ܂B
  uIP lbg[Nv Ƃ́APIP AhX lbg}XÑrbg
  Ƃ̐ςƂ̂łBႦ΁AIP AhX 10.124.35.40 ŁA
  lbg}XN 255.255.0.0 ̏ꍇɂ́AuIP lbg[Nv ́A
  10.124.0.0 ƂȂ܂B
  ̗ł̓oCgPʂ̃lbg}XNgĂ܂AoCgPʂł
  Ȃlbg}XN(:Ⴆ΃TulbeBOȂ)̏ꍇł
  lłB

  Linux ̓lbg}XNoHGg[Ɗ֘AÂ܂B
  VXeɌoHt鎞(: route R}hȂ)ɂ́A
  IP AhXƊ֘As̃foCXw肵܂A
  ̍ۂɃlbg}XNw肵Ȃ΁Aifconfig ł̃foCX
  ݒ肵ƂɎw肵ftH[glbg}XNg܂B

  [eBOɊւĂ̗邽߂ɁÂ悤ȍ\
  VXelĂ݂܂傤B

  Destination     Netmask          Gateway       Flags    Device
  10.124.0.0      255.255.0.0      0.0.0.0       U        eth0
  10.125.0.0      255.255.0.0      0.0.0.0       U        eth1
  10.126.0.0      255.255.0.0      10.125.31.1   UG       eth1
  10.124.12.5     255.255.255.255  0.0.0.0       UH       ppp0
  0.0.0.0         0.0.0.0          10.124.25.1   U        eth0

  ̃VXe3̃lbg[NfoCXĂ܂B
  2̓C[TlbgRg[ŁA1 PPP foCXłB
  3̂ꂩ IP pPbg͓Aɂ̃VXe
  ʂāA 3̂ǂ̃foCXɑ΂ĂpPbg͓]܂B

  ftH[ǧoH́ÃGg[ŎĂʂA
  10.124.25.1 ̃Q[gEGCfoCXłB
  Q[gEGCɑ邽߂ɂ eth0 Rg[g܂B

  PPP foCX1ڑĂA IP AhX 10.124.12.5
  łB

  eth0 foCX IP lbg[N 10.124.0.0 ɂAeth1 foCX
  IP lbg[N 10.125.0.0ɂ܂B

  ɁAIP AhX 10.125.31.1 ̃Q[gEGCʂėp\
  IP lbg[N 10.126.0.0 ւ̃lbgoH݂܂B

  [eBOǂ̂悤ɍŝ𗝉邽߂ɁA10.125.45.1
  ɑ IP pPbglĂ݂܂傤B

  Linux ͌oHe[uAꂼ̃Gglbg}XN
  肾ArbgƂ̐ςƂAs IP AhXƔr܂B
  vApPbg͂̃foCXɑ܂B

  ʂƂāAIP AhX 10.125.45.1 ̃pPbǵAeth1 foCX
  ܂B

  lɁA IP AhX 10.124.12.6 ̃pPbg eth0 foCXɑ
  ̂łAIP AhX 10.124.12.5 ̃pPbg ppp0 foCX
  ܂B
  ȂȂAppp0 foCX 10.124.12.5 ƂЂƂ
  IP AhX󂯎邱ƂłȂłB

  10.126.31.4 ̃pPbg̏ꍇ͂ƈقȂ܂B
  ̏ꍇɂ́ÃAhXɐڑꂽuQ[gEGCv݂
  łB
  ŏqׂ悤Ȃ̂Ɠ@Ō܂AP eth1 foCX
  ɑ̂ł͂ȂA10.125.31.1 Ƃ IP AhX̃VXe
  ̂łB܂AŏIIȍs̃AhX 10.126.31.4 ł͂ȂA
  Q[gEGC IP AhX(10.125.31.1)ɑΉ MAC AhX
  킯łB

  10.125.31.1 ̃VXeɓÃVXěoHe[u
  gāAŏIIȍs 10.126.31.4 ɓ]܂ (Ƃ΂
  VXe eth3 C^[tF[Xg)B

  ̂悤ȃ[eBOł́A낢Ȍ肪܂B
  ɂĂ͂ł͂܂Gꂽ܂񂪁AƂ΁A
  10.126.31.1  10.126.31.4 ̃AhXɑ΂oHĂȂꍇA
  ƂƂ̑茳ɑ΂āAICMP (Internet Control Message Protocol)
  pPbg𑗂ԂAũzXgɑ΂oHvƂm点܂B

  V. vNV ARP ɂ郋[eBO

  āAbƂĕKvȕɂĂ͐ÎŁÃhLg
  ̖ړI̕Ɉڂ邱Ƃɂ܂傤B

  vNV ARP sĂ Linux AIP AhXёΉn[
  hEGA MAC AhX̃Gg ARP LbVɊi[邱ƂƁA
  ̃LbV IP AhX MAC AhXɕϊ̂Ɏg
  Ƃvoĉ

  [gVXe IP AhX 10.124.12.5 ɐڑƂɁALinux
  ͂ IP AhXƁAeth0 Rg[ɑΉ MAC AhX ARP
  LbVɊi[܂B

  ̌ IP AhX 10.124.12.5  MAC AhXɕϊv(ARP)
  󂯎ꍇÃe[u瓾Gg[vɕԂ܂B
  ̌ʁA IP AhXɑꂽpPbǵA񂱂̃T[o
  AT[o͂[gVXe(10.124.12.5)ɓ]܂B

  ꂪ vNV ARP ̎dg݂łB
  T[o [g IP AhXɑ΂ proxy (܂A㗝lAł΂艮A
  u\́vlȂǂȂ) Ƃċ@\킯łB
  ܂AARP vɉ邱ƂŁA[g IP AhXɑ΂
  pPbg󂯕tA]킯łB

  ƂŁAvNV ARP ܂삷邽߂ɂ́A[g IP AhX
  (̗ł 10.124.12.5) ́A(:T[oɐڑĂ)lbg[N
  A_v^ IP lbg[N̂̈łȂ΂Ȃ܂B

  ɂ͓̗R܂B

  ڂ̗ŔARg[ MAC AhX́AɑΉ IP AhX
   ARP LbVɊi[邩łBARP LbV́AIP AhX
   MAC AhXւ̕ϊe[uȂ̂ŁAARP 蓖(assignment)
  Ȃ߂ɂ́AMAC AhXKvłB

  Ԗڂ̗ŔAlbg[Nׂ̂ẴVXéAꂼƎ
  [eBOȂĂƂ_łB
  Aꂼ̃VXe͏ȂƂA[g IP AhXɑ΂
  IP pPbg𑗂邽߂ɂ́AuƓɂȂĂvT[o
  lbg[NA_v^ɑȂ΂ȂȂƂ͂킩Ă܂B

  (ZҒ:[g 10.124.12.5 ɑ΂ Proxy ARP Ă
  C^[tF[X́A10.124.0.0 lbg[NɐڑĂKvA
  ƂƂł傤B
  ق̃lbg[NɂVXe 10.124.12.5 ɃpPbg𑗂ꍇA
  Ƃ肠 10.124.0.0 ̃lbg[N܂ŗv𑗂tĂ͂Ȃ
  ŁAC^[tF[X 10.123.0.0 lbg[NȂǂɂĂA
   ARP vƂ킩܂񂩂BiARP v̓lbg[N
  ΂u[hLXgƂĎŝł͂ȂƎv܂Bj)

  VI. vNV ARP ܂삵Ȃꍇ

  [g IP AhXA10.124.12.5 ł͂ȂāAႦ 10.200.3.1 
  ꍇlĂ݂܂傤B

  1. [gVXéÃAhXǂɑ炢킩ȂB

  [gVXe킩Ă̂́AIP lbg[N 10.124.0.0 ɑ
  ߂ɂ eth0 ɐڑĂP[uɃpPbg𑗂΂AƂ
  ƂłBA10.200.0.0 Ƃ IP lbg[N͂܂B
  ̈̃pPbgǂ֑΂̂킩Ȃ킯łB

  2. ARP Gg[쐬鎞ɁAT[o͑Ή MAC AhX
     ΂āAǂ̃Rg[g΂悢̂킩ȂB

  ́AvNV ARP gƂĂ܂삵ȂꍇɁAł悭
  P[XłB IP AhXAɐڑĂlbg[N
  C^[tF[XɊ蓖ĂĂA IP lbg[NAhX
  ƂقȂƂꍇłB

  VII. vNV ARP ̖_ƔȂ΂Ȃ

  1.  IP AhXɑ΂ĉ vNV ARP Gg[
     łȂ΂Ȃ܂BBSD ̏ꍇAAhX͈͂
     ΂ vNV ARP Ȃꍇɂ͂̃AhX͈͂Փ˂Ȃ
     Ƃۏ؂Kv܂B
     ͂܂ABSD x[X̃lbg[Nł́Albg[N
     ŜЂƂ̃T[oɊ蓖ĂKv邱ƂӖ܂B

  xĂ܂A ARP vɑ΂ĕ̉
  󂯎ꍇABSD VXeł͑ЂǂƂɂȂ܂B

  2. łɃlbg[Nɑ݂ĂAhXɑ΂āAvNV ARP 
     sĂ͂܂B

  ́Aŏqׂ̂ƂoG[VłBlbg[N
  ɂłɑ݂IP AhXɑ΂ vNV ARP sƁA
  Q̉邱ƂɂȂ܂B

  ܂AT[o[[gVXeƂ̐ڑɃvNV ARP 
  KpꍇɁA݃lbg[NŎgp IP AhX
  [gڑɗp肵Ă͂ȂAƂƂłB
  (ZҒ:{ IP AhX̃}Vւ̃RlNVT[o
   proxy ARP ɎgĂ܂A܂{̃RlNVȂ
  ȂAƂƂł͂ȂƎv܂B)

  VII. vNV ARP g͂łȂAl̋@\ꍇɂ́H

  Ȃ vNV ARP gȂꍇɂ͂̑֎i܂B

  ƂȒPȂ̂́ASẴ[gAhXꂼ IP lbg[N
  AhXLł悤ɁA[g IP AhXTulbgĂ܂
  Ƃ@łB
  āAꂼ̃[^[(ׂẴzXgŁAQ[gEGCAhX
  ĕ\Ă邷ׂẴfoCXłB)Ƀlbg[NoH
  t̂łB

  ɂāAꂼ̃[g IP AhXڑĂT[o
  ΂Ă IP lbg[ŃipPbg)悤ɂł܂B

  (ZҒ: [g}ṼAhX܂Ƃ߂ăTulbgɉ ->
  ̃Tulbgւ̌oHQ[gEFCiTulbgւ̃Q[gEFC}V́A
  X̃Q[gEFCjɏB-> Tulbglbg[Nւ̐ڑvA
  Tulbg̃Q[gEFCɂ悤ɂȂBƂƂł傤B)

  ̑ɁA[^[ƁAT[o gated gƂƂ
  ł܂B

  IP lbg[NTulbgȂꍇɂ́AׂẴzXgoHw
  Ă܂AƂ@܂B
  ܂ASẴ[g IP AhXꂼɑ΂āAꂼ̃[^[
  Gg[w肵Ă܂̂łB

  Q[gEGCƃ[^[̏Abvf[gKv͂܂A
  lbg[N̑SẴzXgύXKv͂܂B

  ꂼ̃zXg[^[ɃpPbg𑗂鎞ɎgftH[g[g
  ʂāAuICMP re-direct pPbgvAv𔭍szXgɑA
  ̌ʁAꂼ̃T[oɃzXgoHIɒǉ邩łB

  VIII. _

  vNV ARP ǂ̂悤ɓ삵Aǂ̂悤Ȃ̂Ał
  łƂĂ܂B

  pppd  dip-uri gꍇɂ́A̋@B̂悤Ȏ菇mĂKv
  iK^ȂƂɁj܂B̃\tgEGAIɎs
  邩łB

  vNV ARP ͖\̉ł͂܂B̏ꍇɂ܂
  @\@ɂ܂B

  Ȃ̃lbg[N̖ɂ̋@\ɗǂAŔf
  邱Ƃ҂Ă܂B

  Ə񂪕Kvȕɂ́AW. Richard Stevens ɂ
  uTCP/IP Illustrated, volume 1v "The protocols" (AW\EGXCЊ)
  Ȃǂ܂B

  ǂłāA肪ƂI

