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