IP alias och source IP

Niklas Hallqvist niklas at appli.se
Sun Apr 27 16:57:07 CEST 2008


I allmänhet bestäms avsändaradress beroende på den route som används, i 
den mening att avsändaradressen blir en av de adresser som det utgående 
interfacet har.  Man kan tycka att
när man anger en adress i ett subnät som delas av endast en av det 
utgående interfacets alias, att just det aliaset skall användas som 
källadress, men jag vet inte om det är så på FreeBSD, på OpenBSD gör det 
som Du vill.  Jag tror att FreeBSD gör det också, p.g.a. den gemensamma 
historiken.

Dock innan IP-trafik skickas måste något som heter adressresolution ske, 
via protokollet ARP.
ARP använder sig av broadcast-trafik, och bör nog (det är mycket 
längesedan jag kunde den exakta teorin bakom detta) vara beroende på 
matchande nätmasker både hos sändare och mottagare.  Om ditt modem har 
nätmask 255.255.255.0 och du har 255.0.0.0 är jag inte säker på att ARP 
fungerar.  Så du måste nog veta nätmasken på modemet och sedan sätta 
samma på ditt alias.

Kolla med tcpdump arp, om ARP-trafiken ser rätt ut.

På din ursprungliga fråga, visst, många utilities tillåter dig att binda 
din klientport till en specifik IP.

ping använder sig av -I (för interface address), telnet på OpenBSD 
använder sig av -b (för bind(2) vilket är det systemanrop man använder) 
vilket jag tror att undertecknad lade till för hur länge sedan som 
helst, men kan minnas fel.  OpenSSH använder -b också.  netcat (eller nc 
som det heter på OpenBSD) använder -s (för "source address").  man(1) är 
din vän, många kommandon kan sätta käll-IP, men inte alla...

Niklas




Mattias Barthel skrev:
> Erik Trulsson wrote:
>   
>> On Sun, Apr 27, 2008 at 02:19:09PM +0200, Mattias Barthel wrote:
>>   
>>     
>>> Hej,
>>>
>>> FreeBSD.
>>>
>>> Kan man ändra/sätta utgående IP-address i fall av ip aliasing?
>>>     
>>>       
>> Kan, kan man säkert, men är du säker på att du behöver det?
>>
>>   
>>     
>>> $ ifconfig
>>> xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>>>         inet 89.131.129.100 netmask 0xfffff000 broadcast 89.131.143.255
>>>         inet 10.0.0.1 netmask 0xffffffff broadcast 10.0.0.1
>>>         ether 00:60:08:54:a8:6a
>>>         media: Ethernet autoselect (100baseTX <full-duplex>)
>>>         status: active
>>>
>>>
>>> $ ping modem
>>> PING modem (10.0.0.138): 56 data bytes
>>> ^C
>>> --- modem ping statistics ---
>>> 5 packets transmitted, 0 packets received, 100% packet loss
>>> $                                                             
>>>
>>> # tcpdump -i xl0 host 10.0.0.138
>>> tcpdump: listening on xl0
>>> 14:15:38.628117 89.131.129.100 > modem: icmp: echo request
>>> 14:15:39.638001 89.131.129.100 > modem: icmp: echo request
>>> 14:15:40.648016 89.131.129.100 > modem: icmp: echo request
>>> 14:15:41.658026 89.131.129.100 > modem: icmp: echo request
>>> 14:15:42.668046 89.131.129.100 > modem: icmp: echo request
>>>     
>>>       
>> Du har satt en nätmask=0xffffffff på 10.0.0.1 addressen.
>> Det innebär i princip att du har talat om för datorn att det inte
>> finns några andra addresser på just det nätverket. (Nätmask 0xffffffff bör
>> man bara använda när man vill ha flera addresser på samma logiska nät.
>> Annars bör man sätta nätmasken så att den korrekt beskriver hur nätet är
>> uppbyggt.)
>> Om du försöker skicka till 10.0.0.138 så bör den alltså försöka
>> skicka via 'default gateway', vad du nu har det satt till.
>>
>> Kör 'netstat -r' för att se hur din routing tabell är uppsatt.
>>
>>
>>
>>   
>>     
> Det verkar inte spela någon roll vilken mask jag sätter på 10.0.0.1.
> Och jag verkar ha ett inlägg i routing tabellen för att hitta nätet 10.
> Jag misstänker att modemet (10.0.0.138) inte vet hur han ska svara på 
> ett paket som kommer
> från ett annat nät.
>
>
>
> # ifconfig xl0
> xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         inet 89.131.129.100 netmask 0xfffff000 broadcast 89.131.143.255
>         inet 10.0.0.1 netmask 0xff000000 broadcast 10.255.255.255
>         ether 00:60:08:54:a8:6a
>         media: Ethernet autoselect (100baseTX <full-duplex>)
>         status: active
>
> # ping modem
> PING modem (10.0.0.138): 56 data bytes
> ^C
> --- modem ping statistics ---
> 3 packets transmitted, 0 packets received, 100% packet loss
>
> # netstat -rn
> Routing tables
>
> Internet:
> Destination        Gateway            Flags    Refs      Use  Netif Expire
> default            89.131.128.1       UGSc       13 91452641    xl0
> 10                 link#1             UC          2        0    xl0
> 10.0.0.138         00:15:e9:f9:53:17  UHLW        0       10    xl0   1086
> 10.255.255.255     ff:ff:ff:ff:ff:ff  UHLWb       2       44    xl0
> 89.131.128/20      link#1             UC          2        0    xl0
> 89.131.128.1       00:00:5e:00:01:03  UHLW       10       55    xl0    521
> 89.131.129.100     127.0.0.1          UGHS        0       28    lo0
> 89.131.143.255     ff:ff:ff:ff:ff:ff  UHLWb       1     4358    xl0
> 127.0.0.1          127.0.0.1          UH          3    61824    lo0
> 192.168.1          link#2             UC          6        0   fxp0
> 192.168.1.129      00:1f:3a:31:cd:d7  UHLW        1     3303   fxp0   1130
> 192.168.1.131      link#2             UHLW        2      399   fxp0
> 192.168.1.231      00:1c:b3:7c:63:b6  UHLW        1   377160   fxp0    342
> 192.168.1.244      00:b0:d0:e9:15:f6  UHLW        0  1297954   fxp0    881
> 192.168.1.250      00:0a:e6:dd:a9:68  UHLW        0 35300076   fxp0    449
> 192.168.1.255      ff:ff:ff:ff:ff:ff  UHLWb       3     3630   fxp0
>
>
>
>
>
>
> _________________________________________________
> BSD Users Sweden -- BUS at stacken.kth.se
> https://lists.stacken.kth.se/mailman/listinfo/bus
>
>   


More information about the BUS mailing list