Jails and IP Aliasing

David Allen the.real.david.allen at gmail.com
Mon Jul 7 19:16:46 UTC 2008


On Mon, Jul 7, 2008 at 10:54 AM, Jason Morgan
<jwm-freebsd-questions at sentinelchicken.net> wrote:
> On 2008.07.07 09:51:33, David Allen wrote:
>> Unless I'm losing my mind, I'm encountering what seems to yet another
>> gotcha with jails.  The following has been dumbed down for clarity and
>> brevity.
>>
>> ---------------------------------------------------------------------
>> # hostname
>> jailhost.example.org
>>
>> # host jailhost
>> jailhost.example.org has address 10.0.1.2
>>
>> # ifconfig fxp0
>> fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>         options=b<RXCSUM,TXCSUM,VLAN_MTU>
>>         ether 00:07:e9:c8:2e:32
>>         inet 10.0.1.2 netmask 0xffffff00 broadcast 10.0.1.255
>>         inet 10.0.1.3 netmask 0xffffffff broadcast 10.0.1.3
>>         inet 10.0.1.4 netmask 0xffffffff broadcast 10.0.1.4
>>         media: Ethernet autoselect (100baseTX <full-duplex>)
>>         status: active
>
> This is the output for my jail interface. Notice that your jail
> aliases are broadcasting on the jail's IP. I don't know if this is an
> issue or not (my jails run on i386 FBSD 6.3), but it's something to
> look at. How are you setting the aliases?
>
> sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>     options=b<RXCSUM,TXCSUM,VLAN_MTU>
>     inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
>     inet 10.0.0.101 netmask 0xffffff00 broadcast 10.0.0.255
>     inet 10.0.0.201 netmask 0xffffff00 broadcast 10.0.0.255
>     ether xx:xx:xx:xx:xx:xx
>     media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)
>     status: active

My own aliases:

# grep fxp0 /etc/rc.conf
ifconfig_fxp0="inet 10.0.1.2 netmask 0xffffff00"
ifconfig_fxp0_alias0="10.0.1.3 netmask 0xffffffff"
ifconfig_fxp0_alias1="10.0.1.4 netmask 0xffffffff"
ifconfig_fxp0_alias2="10.0.1.5 netmask 0xffffffff"

My understanding from the handbook is that the mask should be set to all
ones if the alias is for an address that's part of the same network.  For
a different segment, it's the first alias that should be set to the real
netmask, with any additional aliases using a netmask of all ones.

Granted, the broadcast addresses looks odd.  If I my programming skills
were better, I'd just read through the code and understand what's really
happening, but for now, I'm just taking the FreeBSD folks at their word at
following instructions.  That's a roundabout way of saying I think your
aliases are set up incorrectly.  ;-)

If you're not seeing the behaviour I'm seeing, do let me know.  But to
clarify with a concrete example, the following is what I see on the
jailhost (10.0.1.2) when it connects to port 25 on one of the
jails (10.0.1.5).

# tcpdump -nqti lo0 port 25
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo0, link-type NULL (BSD loopback), capture size 96 bytes
IP 10.0.1.5.62110 > 10.0.1.5.25: tcp 0
IP 10.0.1.5.25 > 10.0.1.5.62110: tcp 0
IP 10.0.1.5.62110 > 10.0.1.5.25: tcp 0
IP 10.0.1.5.25 > 10.0.1.5.62110: tcp 89
IP 10.0.1.5.62110 > 10.0.1.5.25: tcp 0

# netstat -nf inet
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  10.0.1.5.25            10.0.1.5.62110         ESTABLISHED
tcp4       0      0  10.0.1.5.62110         10.0.1.5.25            ESTABLISHED

# sockstat -4 -p 25
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     sendmail   16594 1  tcp4   10.0.1.5:25           10.0.1.5:62110
root     sendmail   16594 4  tcp4   10.0.1.5:25           10.0.1.5:62110
root     sendmail   16594 7  tcp4   10.0.1.5:25           10.0.1.5:62110
root     telnet     16593 3  tcp4   10.0.1.5:62110        10.0.1.5:25

Why the jailhost is suddenly using the jail's IP address is beyond me.


More information about the freebsd-questions mailing list