У меня есть/64 адресов IPv6, доступных одному из моих серверов (Ubuntu 12.04). Я связываю их как это:
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.82
netmask 255.255.255.248
network xxx.xxx.xxx.80
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.81
iface eth0 inet6 static
address xxxx::2
netmask 64
gateway xxxx::1
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_defrtr
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_pinfo
pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_rtr_pref
up /sbin/ifconfig eth0 inet6 add xxxx::3/64
# ... snip ...
up /sbin/ifconfig eth0 inet6 add xxxx::25/64
Это работает, но приложения все используют xxxx::25
для их исходящих запросов, если конкретно не сказали иначе. Если я добавляю xxxx::26
в моем /etc/network/interfaces
, они все начинают использовать это. Кажется, что они просто используют то, что самое большое количество.
Как я указываю определенный адрес, который будет использоваться в качестве значения по умолчанию? В моем случае я, оказывается, хочу использовать самый низкий адрес (xxxx::2
), но я действительно хотел бы знать, как указать конкретный, должен потребность возникать в будущем.
Можно решить это путем изменения маршрута по умолчанию. Каждый маршрут в Linux имеет опцию определить исходный адрес по умолчанию. Если Вы определяете xxxx:: 3 адреса в Вашем маршруте тогда, что каждый будет использоваться по умолчанию:
/sbin/ip -6 route del default
/sbin/ip -6 route add default via xxxx::1 src xxxx::3
при показе таблицы маршрутизации Вы будете видеть результат:
/sbin/ip -6 route
default via xxxx::1 dev eth0 src xxxx::222 metric 1024
Одна вещь не упустить состоит в том, что адреса IPv6 находятся в предварительном состоянии, пока дублирующееся обнаружение адреса не было выполнено. Linux откажется использовать предварительный адрес в качестве исходного адреса по умолчанию. Это означает, что Вы, возможно, должны были бы добавить короткое sleep
прежде, чем добавить этот маршрут так, чтобы адрес имел время, чтобы выйти из предварительного состояния и стать применимым.