Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I work for an ISP that's in the process of making its infrastructure IPv6-ready. Our core routers already have a working setup, but a large portion of our fiber customers are behind a router running Debian Squeeze.

Enabling IPv6 capabilities on linux wasn't a problem, however, once we assigned an IPv6 address and working routes to the linux router it immediately transmitted working addresses and routes to all systems behind it, which kind of wasn't what we want.

Our current plan involves setting IPv6 addresses manually on all systems, but I can't seem to find the switch or option to tell the kernel to not perform router advertisements.

Any suggestions?

share|improve this question
1  
Are you sure you're not running radvd? Linux by itself shouldn't be originating router advertisements. –  Celada Jan 17 '13 at 15:23
    
Yes, fairly certain -- neither router has the software installed. –  Shadur Jan 17 '13 at 15:25
1  
Well, that's mysterious then. Something is sending out those router advertisements, and I'm pretty sure it's not the kernel (the kernel does accept router advertisements autonomously without any help from userspace software, but doesn't send them as far as I know). –  Celada Jan 17 '13 at 15:31
add comment

3 Answers

What you probably really want is DHCP-PD (Prefix Delegation). With DHCP-PD, your IPv6 setup will look a lot more like your IPv4 setup.

In IPv4, you use DHCP to assign a single IPv4 address to the customer, then the customer uses NAT to distribute local IPs to its network (usually via DHCP as well).

In IPv6, you use DHCP-PD to assign a /64 to the customer, then the customer uses router adv. to assign addresses from this /64 to its internal network. There are scripts around to update the radvd configuration whenever the /64 you assign changes.

share|improve this answer
add comment

It almost sounds like you're bridging layer 2 between the LAN and WAN interfaces. If that's the case then lots of your user's internal traffic might end up on the WAN, and all Router Advertisements on the WAN (which are meant for the CPE) are actually bridges to the LAN.

If this is the case then:

  1. stop doing that bridging, it can easily compromise your user's security
  2. use ebtables to filter between LAN and WAN

I really hope I'm wrong here...

share|improve this answer
    
I'm pretty sure I'm not bridging anything. –  Shadur Jan 18 '13 at 8:15
    
If you're not bridging then something on your CPE is sending out those Router Advertisements. The kernel doesn't do that. Usually radvd is the tool used to send them, but maybe there is some other software that does it on your box. –  Sander Steffann Jan 18 '13 at 13:49
add comment

to disable RA acceptance:

sysctl -w net.ipv6.conf.<interface>.forwarding=0
sysctl -w net.ipv6.conf.all.forwarding=0
sysctl -w net.ipv6.conf.<interface>.accept_ra=0
sysctl -w net.ipv6.conf.all.accept_ra=0

or add something like this to /etc/network/interfaces

pre-up echo 0 > /proc/sys/net/ipv6/conf/<interface>/forwarding
pre-up echo 0 > /proc/sys/net/ipv6/conf/<interface>/accept_ra
pre-up echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
pre-up echo 0 > /proc/sys/net/ipv6/conf/default/accept_ra
share|improve this answer
    
I still need it to do forwarding. I just need it to stop sending out or forwarding router advertisements. –  Shadur Jan 17 '13 at 15:41
    
forwarding=0 wont disable packet forwarding. ipv6 settings are very convoluted, unfortunately –  h3rrmiller Jan 17 '13 at 15:43
    
this is for RA acceptance btw. it sounds like you need to disable radvd. take a look in /etc/radvd.conf and change AdvSendAdvert on to AdvSendAdvert off in the desired interface. –  h3rrmiller Jan 17 '13 at 15:45
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.