On 2011-12-03, Douglas Maus <[email protected]> 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).