  Proxy ARP mini-HOWTO
  Al Longyear, <longyear@netcom.com>
  December 5, 1994
  쓇 _, <kei@sm.sony.co.jp>
  October 1, 1996

  Proxy ARP ̐ݒ@

  : ͂̕ȂȑOɏꂽ̂Ȃ̂ŁA܂ǂ Linux 
  ɂ͂Ă͂܂Ȃӏ܂B (JF Project)

  1.  Cg_NV

  ̃hLg Linux  PPP  SLIP T[ofoCXƂƂɃvN
  V ARP (Address Resolution Protocol) gƍlĂlΏۂɂ
  ďĂ܂B̕ł́AvNV ARP  ugracious ARPv (z
  ̂悢 ARP)ȂǂƌĂł邱Ƃ܂BvNV 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̃V
  Xeł́AT[o[񋟂邱ƂŁAuLvANCAg
  ͂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ǂ̂悤ɋ@\̂ɂĊ{I
  KvłBȉ3̏͂ł TCP/IP lbg[Nǂ̂悤ɋ@\A
  [eBOǂɓ삷̂AȒPɏqׂ܂B

  2.  n[hEGA猩lbg[N

  C[Tlbgg[NOglbg[Nׂ͂ MAC (Media
  Access Control) AhXgĎĂ܂B͂ꂼ̃R
  g[[Ɋ蓖Ăꂽ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ɕϊ܂Blbg[N\tgA IP
  pPbgw肳ꂽAhXɑ鎞ɂ́AMAC AhXm邽߂ɂ
  LbV܂BLbV̒ɂȂꍇɂ́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̃hL
  gł͂ɂĂ͐G܂BɊւĂ IP lbg[NɊւ
  hLgQƂĉB

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

  3.  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

  4.  TCP/IP [eBO

  [OĂƂ肵܂Ał́AuXpjOEc[
  (spanning-tree)v[eBOɂďqׂĂAIP pPbǵu\[
  XE[eBO(source-routing)vł͂܂Bg[NOł
  \[X[eBOg܂A IP ̃\[X[eBOł͂
  Aig[NÓjMAC wōsĂ̂łBg[NO
  MAC \[X[eBOsĂ̂́Aꂪg[NOɂp
  Pbg̔zɕKvłBʓIɂ IP \[X[eBOg
  ͐ł܂B]

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

  IP pPbǵAꂪoRlbg[N̂ꂼ̒iKŃ[eB
  O܂Bꂼ̃zXgA[^[AQ[gEGĆAꂼꂪoH
  e[ũRs[LAɂƂÂĂꂼ IP pPbg
  ǂɑ΂悢肵܂B

  [eBÓAuIP lbg[Nv gčsȂ܂Bꂼ
  lbg[NC^[tF[Xɂ́Aj[N IP lbg[NƁAIP A
  hXAlbg}XN蓖ĂĂ܂BuIP lbg[Nv Ƃ́A
  PIP AhX lbg}XÑrbgƂ̐ςƂ̂łBႦ
  ΁AIP AhX 10.124.35.40 ŁAlbg}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Â܂BVXeɌoHt
  鎞 (: route R}hȂ) ɂ́AIP AhXƊ֘A
  s̃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[T
  lbgRg[ŁA1 PPP foCXłB3̂ꂩ
  IP pPbg͓Aɂ̃VXeʂāA 3̂ǂ̃foCX
  ΂ĂpPbg͓]܂B

  ftH[ǧoH́ÃGg[ŎĂʂA 10.124.25.1
  ̃Q[gEGCfoCXłBQ[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܂Bv
  ApPbg͂̃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 Ah
  X󂯎邱ƂłȂł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 ł͂ȂAQ[gEGC IP
  AhX (10.125.31.1) ɑΉ MAC AhXɑ킯łB

  10.125.31.1 ̃VXeɓÃVXěoHe[ug
  ā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

  5.  vNV ARP ɂ郋[eBO

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

  vNV ARP sĂ Linux AIP AhXёΉn[h
  EGA 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݂łBT[o [g IP AhXɑ
   proxy (܂A㗝lAł΂艮Au\́vlȂǂȂ) Ƃ
  ċ@\킯łB܂AARP vɉ邱ƂŁA[g IP A
  hXɑ΂pPbg󂯕tA]킯łB

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

  ɂ͓̗R܂B

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

  Ԗڂ̗ŔAlbg[Nׂ̂ẴVXéAꂼƎɃ[
  eBOȂĂƂ_łBAꂼ̃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 ɃpPb
  g𑗂ꍇAƂ肠 10.124.0.0 ̃lbg[N܂ŗv𑗂t
  ͂Ȃ̂ŁAC^[tF[X 10.123.0.0 lbg[NȂǂɂ
  A ARP vƂ킩܂񂩂BiARP v̓lb
  g[Nɑ΂u[hLXgƂĎŝł͂ȂƎv
  ܂Bj)

  6.  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
     [NC^[tF[XɊ蓖ĂĂA IP lbg[
     NAhXƂقȂƂꍇłB

  7.  vNV ARP ̖_ƔȂ΂Ȃ

  1.  IP AhXɑ΂ĉ vNV ARP Gg[͂
     łȂ΂Ȃ܂BBSD ̏ꍇAAhX͈͂ɑ΂ vN
     V ARP Ȃꍇɂ͂̃AhX͈͂Փ˂ȂƂۏ؂
     Kv܂B͂܂ABSD x[X̃lbg[Nł́A
     lbg[NŜЂƂ̃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[[gV
     XeƂ̐ڑɃvNV ARP KpꍇɁA݃lbg[NŎg
     p IP AhX[gڑɗp肵Ă͂ȂAƂ
     ƂłB

     (ZҒ:{ IP AhX̃}Vւ̃RlNVT[o
     肵 proxy ARP ɎgĂ܂A܂{̃RlNV
     ȂAƂƂł͂ȂƎv܂B)

  8.  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
  [NoHt̂łB

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

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

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

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

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

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

  9.  _

  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

  10.  {ɂ

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

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

