On 2011-12-03, Douglas Maus <dm...@speakeasy.net> wrote:
> - Am I right that - if my ifconfig only has an inet6 link-local address,
> then I won't be able to connect to IPv6 hosts outside my local network?

correct.

> - If my 'ifconfig re0' shows this:
> re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 00:30:48:dc:75:df
>         priority: 0
>         groups: egress
>         media: Ethernet autoselect (1000baseT full-duplex,master,
> rxpause,txpause)
>         status: active
>         inet6 fe80::230:48ff:fedc:75df%re0 prefixlen 64 scopeid 0x1
>         inet 10.0.1.8 netmask 0xffffff00 broadcast 10.0.1.255
> then I won't be able to connect to global IPv6 hosts outside my network?

correct.

> - If my router advertises the prefix 2001:470:1f07:15cc::/64,
> then the appropriate global address would be:
> 2001:470:1f07:15cc:230:48ff:fedc:75df ?

correct.

> - Does StateLess Address AutoConfiguration refer to the configuration of
> just the link local address fe80::230:48ff:fedc:75df, or does it also
> include the global address 2001:470:1f07:15cc:230:48ff:fedc:75df ?

the global address.

> - If 'netstat -f inet6 -rn' shows the row:
> 2001:470:1f07:15cc::/64            link#1                         UC
>          0        0     -     4 re0
> then that indicates my machine is seeing the router advertised prefix?

yes.

> - Since my first post, I think I have realized that - in /etc/hostname.re0
> the line 'rtsol', does _not_ mean that at boot time the program /sbin/rtsol
> handles / performs SLAAC.
> The 'rtsol' in hostname.re0 triggers certain actions in
> /etc/netstart, correct?
> 'rtsol' does not configure address on interfaces, correct?

rtsol sends the messages, but the configuration is done by the kernel,
assuming net.inet6.ip6.forwarding=0 and net.inet6.ip6.accept_rtadv=1.

> - (I admit I do not understand shell scripts)
> /etc/netstart processes settings, and does both setting of address
> on interfaces, and configures routes?

generally yes, but the ip6 auto addressing is done in the kernel,
all netstart does here is to run rtsol.

> - The actual tool to set address is /sbin/ifconfig, correct?

to manually set addresses, or set addresses from hostname.if files, yes.

> - When hostname.re0 has 'rtsol', is /etc/netstart supposed to
> (A) use the MAC or lladdr to configure the IPv6 link-local
>  fe80::230:48ff:fedc:75df
> _and_
> (B) listen for route advertisement with prefix, and then configure
>  the global IPv6 address with prefix:lladdr ?

the kernel does all this.

> - If (B) is true, then if my machine is correctly configured, I should
> get ifconfig to show both:
>         inet6 fe80::230:48ff:fedc:75df%re0 prefixlen 64 scopeid 0x1
> and something like:
>         inet6 2001:470:1f07:15cc:230:48ff:fedc:75df%re0 prefixlen 64
>  scopeid 0x1

scopeid is for link-local addresses. it shoud look something like:

vic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:0c:29:87:71:ca
        priority: 0
        groups: egress
        media: Ethernet autoselect
        status: active
        inet6 fe80::20c:29ff:fe87:71ca%vic0 prefixlen 64 scopeid 0x1
        inet 10.15.5.72 netmask 0xffffff00 broadcast 10.15.5.255
        inet6 2001:4b10:1002:55:20c:29ff:fe87:71ca prefixlen 64 autoconf pltime 
604440 vltime 2591640

> - If (B) is not true, then what is the right way to get the global address
> configured at boot time?

put 'rtsol' in the hostname.if file and this in sysctl.conf:

net.inet6.ip6.forwarding=0
net.inet6.ip6.accept_rtadv=1

if you have these set and it's still failing, we'll need more information.
specifically, a packet capture would be useful, as would nd6 debug logging.

packet capture: tcpdump -s1500 -Xvvi <interface> proto icmp6

debug logging: set ddb.console=1 in sysctl.conf and reboot
(you can't set this sysctl later on, you will get "Operation not
permitted"). when the system has booted, make sure you're in a text
mode console and then break into ddb (either hit ctrl+alt+esc, or
send a BREAK if it's serial console, or run 'sysctl ddb.trigger=1')
and then type: "w nd6_debug 1" and "c". it should look something
like this:

Stopped at      Debugger:       ldrb    r15, [r15, r15, ror r15]!
ddb> w nd6_debug 1
nd6_debug                      0        =              1
ddb> c

you should then be back where you were at your regular console;
run rtsol again and see if additional information shows up at the
bottom of dmesg.

> - Will the global address need to be an 'alias' one, in addition to
> the link-local one?

we don't use 'alias' with v6 (well, you can type it on the command
line, but it doesn't change things; v6 accepts multiple addresses on
an interface by default).

Reply via email to