วิธีกำหนดค่า radvd, dhcpd6, routing และ / 64 subnet ตามคำนำหน้าที่มอบหมายโดยเซิร์ฟเวอร์ DHCPv6-PD


10

ISP ของฉันเพิ่งเริ่มต้นบริการซ้อนคู่ IPv4 / IPv6 เพื่อเชื่อมต่ออินเทอร์เน็ต IPv4 / IPv6 ผู้ใช้เกือบทั้งหมดมักจะใช้ CPE ที่ ISP ให้เช่า แต่ฉันต้องการใช้เราเตอร์ Linux แทน CPE เช่นนี้เพราะเราเตอร์ของฉันมีบทบาทมากมาย (กฎ iptables จำนวนมากและอินเตอร์เฟสอีเทอร์เน็ต 3 ตัวพร็อกซีย้อนกลับ http, แคช http, memcached, เซิร์ฟเวอร์ smtp / pop และพร็อกซี DNS) ฉันต้องการให้มันเป็นเราเตอร์สแต็คคู่ IPv4 / IPv6

เราเตอร์ของฉัน

  • CentOS6.0 i686
  • eth0 สำหรับ WAN
  • eth1,2 สำหรับ LAN
  • ISC dhcp (รุ่น 4.1.1) ติดตั้งโดย "# yum install dhcp" จาก CentOS อัปเดต repo
  • ติดตั้ง radvd (รุ่น 1.6) โดย "# yum install radvd" จาก CentOS พื้นฐาน repo
  • [แก้ไข] เหตุผลที่ฉันใช้ ISC dhclient คือเราเตอร์ของฉันต้องส่งตัวเลือก DHCPv6 16 (คลาสผู้จำหน่าย) ในการร้องขอและข้อความร้องขอเพื่อรับตัวเลือกข้อมูลเฉพาะของผู้ขายซึ่งรวมถึงข้อมูลเฉพาะของ ISP ( หมายเลขโทรศัพท์ SIP, ที่อยู่เซิร์ฟเวอร์เฟิร์มแวร์) ฉันรู้วิธีการตั้งค่าตัวเลือก 16 ใน ISC dhclient แต่ไม่ทราบใน WIDE-dhcpv6 และฉันไม่พบการตั้งค่าเช่น "id-assoc" ใน ISC dhclient

เป้าหมายของฉัน

  • / 48 คำนำหน้ามอบหมายให้ไคลเอ็นต์ DHCPv6-PD (DHCPv6 Prefix Delegation) (dhclient) บน eth0
  • เส้นทางเริ่มต้นของ IPv6 ถูกตั้งค่าเป็น ISP ฉันต้องพิจารณาที่อยู่ link-local ของเซิร์ฟเวอร์ DHCPv6 ของ ISP เป็นเส้นทางเริ่มต้น
  • ซับเน็ตหนึ่ง / 64 และหนึ่งที่อยู่ร่วมของโลก (ซึ่งอยู่ในคำนำหน้าที่มอบหมาย) ถูกกำหนดให้กับ LAN I / F แต่ละตัว (eth1 / eth2)
  • radvd บน eth1 และ eth2 ประกาศ RA ตามซับเน็ตที่ได้รับมอบหมาย / 64
  • dhcpd6 บน eth1 และ eth2 ประกาศข้อมูลเครือข่ายเพิ่มเติม (ชื่อเซิร์ฟเวอร์รายการค้นหาโดเมนและที่อยู่เซิร์ฟเวอร์ sip) ที่ได้รับจากเซิร์ฟเวอร์ DHCPv6 ของ ISP

การกำหนดค่าปัจจุบันของฉัน

/ etc / sysconfig / เครือข่าย

NETWORKING=yes
HOSTNAME=xxx.yyy.zzz

# Enable IPv6 routing and stop accept_ra/autoconf.
IPV6FORWARDING=yes

/ etc / sysconfig / เครือข่ายสคริปต์ / ifcfg-eth0

DEVICE="eth0"
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none

# Enable DHCPv6-PD client.
DHCPV6C=yes
DHCPV6C_OPTIONS="-P -cf /etc/dhcp/dhclient6.conf"

# Disable make_resolv_conf function in /sbin/dhclient-script.
PEERDNS=no

/etc/dhcp/dhclient6.conf

script "/sbin/dhclient-script";
interface "eth0" {
        send dhcp6.reconf-accept;
        also request dhcp6.vendor-opts, dhcp6.sip-servers-names, dhcp6.sip-servers-addresses, dhcp6.sntp-servers;
}

ผลลัพธ์

หลังจาก "# เครือข่ายบริการเริ่มต้นใหม่" ไคลเอ็นต์ DHCPv6-PD ดูเหมือนว่าจะเสร็จสิ้นเรียบร้อยแล้ว

lease6 {
  interface "eth0";
  ia-pd xx:xx:xx:xx {
    starts 1312464004;
    renew 7200;
    rebind 10800;
    iaprefix 24xx:xxxx:xxxx::/48 {
      starts 1312464004;
      preferred-life 12600;
      max-life 14400;
    }
  }
  option dhcp6.client-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
  option dhcp6.server-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
  option dhcp6.reconf-accept ;
  option dhcp6.sip-servers-addresses 24xx:xxxx:xxxx:xxxx::1;
  option dhcp6.name-servers 24xx:xxxx:xxxx:xxxx::3,24xx:xxxx:xxxx:b::3;
  option dhcp6.domain-search "xxx.jp.", "yyy.jp.";
  option dhcp6.sntp-servers 24xx:xxxx:xxxx:xxxx::a,24xx:xxxx:xxxx:b::b;
}

คำถาม

ไคลเอ็นต์ DHCPv6-PD ได้รับการมอบหมาย / คำนำหน้า 48 ให้สำเร็จ แต่หลังจากนั้น

  • วิธีตั้งค่าเส้นทางเริ่มต้นของ IPv6 ในตารางเส้นทางของเราเตอร์
  • วิธีกำหนดที่อยู่ IPv6 ส่วนกลางและ / 64 เครือข่ายย่อยให้กับแต่ละ LAN I / F (eth1 และ eth2) ตามคำนำหน้าที่มอบหมาย?
  • วิธีทริกเกอร์ radvd เพื่อประกาศ RA ในแต่ละ LAN I / F (eth1 และ eth2)?
  • วิธีการทริกเกอร์เซิร์ฟเวอร์ DHCPv6 (dhcpd6) ในแต่ละ LAN I / F เพื่อประกาศข้อมูลเครือข่ายเพิ่มเติม (ชื่อเซิร์ฟเวอร์รายการค้นหาโดเมนและที่อยู่เซิร์ฟเวอร์ sip) ที่ได้รับจากเซิร์ฟเวอร์ DHCPv6 ของ ISP

ฉันเดา

ตามที่ "$ man dhclient" และ "$ man dhclient-script", dhclient-scriptดูเหมือนว่าจะใช้ในการกำหนดค่าการตั้งค่าดังกล่าวและมีตะขอบางอย่าง แต่ตอนนี้ไม่ทำอะไรเลยสำหรับไคลเอ็นต์ DHCPv6-PD

ใช่ฉันอาจต้องเขียนสคริปต์บางอย่างที่เหมาะสมกับสภาพแวดล้อม DHCPv6-PD ของฉันแม้ว่าฉันจะไม่คุ้นเคยกับการกำหนดค่าเครือข่าย IPv6 ใครแจ้งให้ฉันทราบการตั้งค่าข้างต้นใน dhclient-script [แก้ไข] ฉันอยากรู้ dhclient-script ที่ใช้งานได้จริง

และฉันกังวลว่าควรพิจารณาเป็นพิเศษ ตัวอย่างเช่นเนื่องจากที่อยู่ IPv6 แต่ละรายการมีอายุการใช้งานที่ถูกต้อง / เหมาะสมเมื่อฉันกำหนดที่อยู่ IPv6 ทั่วโลกให้กับส่วนต่อประสาน LAN ตามคำนำหน้าที่มอบหมายฉันจึงต้องกำหนดที่อยู่ IPv6 ไม่เพียง แต่ยังอายุการใช้งานที่ต้องได้รับมอบหมาย คำนำหน้าของอายุ / ชีวิตที่ต้องการหรือถูกต้อง?

นอกจากนี้เซิร์ฟเวอร์ radvd และ DHCPv6 บนอินเตอร์เฟส LAN อาจต้องกำหนดค่าใหม่เมื่อการกำหนดค่าใหม่ DHCPv6 เกิดขึ้นหรือไม่ ควรใช้เบ็ดชนิดใด

[แก้ไข] เมื่อการกำหนดค่าใหม่ DHCPv6 เกิดขึ้นจะประกาศข้อมูลใหม่และล้าสมัยอย่างไร Radvd ประกาศคำนำหน้าก่อนหน้าโดยอัตโนมัติล้าสมัยหรือไม่ เซิร์ฟเวอร์ DHCPv6 ประกาศชื่อเซิร์ฟเวอร์ก่อนหน้านี้ล้าสมัยโดยอัตโนมัติหรือไม่

คำตอบ:


4

ฉันไม่ทราบคำตอบสำหรับคำถามของคุณ แต่ฉันแค่ต้องการเตือนคุณเกี่ยวกับการใช้ที่อยู่เซิร์ฟเวอร์ DHCP เป็นเราเตอร์เริ่มต้นของคุณ หากใช้งานได้โดยบังเอิญ ... ใน IPv6 เส้นทางเริ่มต้นจะถูกสื่อสารโดย RA และไม่ใช่โดย DHCP

คุณจะต้องเปิดใช้งานการส่งต่อยอมรับ RA และส่ง RS ปัญหาที่นี่คือเคอร์เนลที่รวมอยู่ใน Centos6 ไม่อนุญาตให้คุณทำเช่นนั้น เมื่อเปิดใช้งานการส่งต่อแล้วการยอมรับ RA และการส่ง RS ถูกปิดใช้งาน ควรมีเคอร์เนล CentosPlus พร้อมกับแพตช์ที่เกี่ยวข้อง ดูกระทู้ / ข้อความในรายชื่อผู้รับจดหมายได้ที่http://lists.centos.org/pipermail/centos/2011-April/thread.html#109756

การตั้งค่า sysctl.conf ที่เกี่ยวข้องคือ:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2
net.ipv6.conf.eth0.accept_ra_defrtr=1
net.ipv6.conf.eth0.router_solicitations=1

2
ที่จริงแล้วคุณต้องการ accept_ra เป็น 2 (ยอมรับแม้ว่าการกำหนดเส้นทางจะถูกเปิดใช้งาน) ไม่เช่นนั้นเคอร์เนลจะไม่สนใจมันที่เราเตอร์
Kyle Butt

2
  • ควรกำหนดเส้นทางเริ่มต้นของ IPv6 ไม่ว่าจะเป็นการเชื่อมต่ออินเทอร์เน็ตเริ่มต้นของคุณก่อนที่คุณจะใช้ DHCPv6 PD เพื่อรับซับเน็ตเพิ่มเติม คุณไม่ได้พูดถึงว่าคุณเชื่อมต่อต้นน้ำจริง ๆ ดังนั้นฉันไม่สามารถช่วยคุณได้
  • ฉันใช้ WIDE DHCPv6 ไคลเอนต์มากกว่า ISC ดังนั้นฉันไม่ทราบวิธีการทำเฉพาะ แต่ฉันคาดหวังว่า ISC มีบางสิ่งบางอย่างเทียบเท่ากับตัวเลือกการกำหนดค่า WIDE นี้:

    id-assoc pd {
        prefix-interface eth0 {
            sla-id 1;
            sla-len 4;
        };
    };
    

    โดยทั่วไปคุณบอกไคลเอ็นต์ DHCP ถึงวิธีการกำหนดซับเน็ตให้กับอินเตอร์เฟสภายใน การกำหนดค่าข้างต้นบอกว่า "ฉันได้รับส่วนเสริมหน้า 4 บิตมอบให้ฉัน ( sla-len 4) ใช้เครือข่ายย่อยแรกที่มีอยู่ ( sla-id 1) และกำหนดให้กับeth0( prefix-interface eth0)

  • ติดตั้ง radvd ด้วยinterfacestanzas ที่เหมาะสม(มีตัวอย่างที่ดีในradvd.confman page ที่จะทำงาน) และมันจะใช้งานได้
  • ฉันช่วยคุณไม่ได้ นอกเหนือจากการทดสอบฉันไม่ได้ใช้บริการ DHCPv6 (ฉันรับข้อมูล DHCP ทั้งหมดจากเซิร์ฟเวอร์ DHCP ของฉัน)

ขอบคุณสำหรับคำตอบ. 1. วิธีการเชื่อมต่ออัพสตรีมคือการเชื่อมต่อสายเคเบิลอีเธอร์เน็ตกับ FTTH GE-PON ตอนนี้ไม่มีวิธีระบุเส้นทาง IPv6 เริ่มต้นผ่าน DHCPv6 ฉันต้องพิจารณาที่อยู่ link-local ของเซิร์ฟเวอร์ DHCPv6 เป็นเส้นทางเริ่มต้น
takaomag

2. ถึงแม้ว่าฉันไม่ได้พูดถึงเหตุผลที่ฉันใช้ ISC dhclient คือเราเตอร์ของฉันต้องส่งตัวเลือก DHCPv6 16 (คลาสผู้ขาย) ในการร้องขอและข้อความขอเพื่อรับตัวเลือกข้อมูลเฉพาะผู้ขายซึ่งรวมถึงบางส่วน ข้อมูลเฉพาะของ ISP (หมายเลขโทรศัพท์ SIP, ที่อยู่เซิร์ฟเวอร์เฟิร์มแวร์) ฉันรู้วิธีการตั้งค่าตัวเลือก 16 ใน ISC dhclient แต่ไม่ทราบใน WIDE-dhcpv6 และฉันไม่พบการตั้งค่าเช่น "id-assoc" ใน ISC dhclient
takaomag

2
3,4 ฉันอาจจะเขียนสคริปต์ที่ไม่ดีเพื่อสร้าง radvd.conf และ dhcpd6.conf ตามข้อมูล (คำนำหน้า ฯลฯ ) จากเซิร์ฟเวอร์ DHCPv6 แต่เมื่อการกำหนดค่าใหม่ของ DHCPv6 เกิดขึ้นจะประกาศข้อมูลใหม่และล้าสมัยอย่างไร Radvd ประกาศคำนำหน้าก่อนหน้าโดยอัตโนมัติล้าสมัยหรือไม่ เซิร์ฟเวอร์ DHCPv6 ประกาศชื่อเซิร์ฟเวอร์ก่อนหน้านี้ล้าสมัยโดยอัตโนมัติหรือไม่
takaomag

อย่างไรก็ตามฉันต้องการรู้ dhclient-script ที่ใช้ได้จริง
takaomag

อย่าเพิ่มข้อมูลทั้งหมดนี้ในความคิดเห็นเกี่ยวกับคำตอบ เพิ่มคำถามของคุณ
womble

-1

Wombie ให้คำตอบเดียวกับที่ฉันจะใช้สำหรับการตั้งค่า radv และการกำหนดเส้นทาง Inet6 ถูกออกแบบมาเพื่อทำการกำหนดค่าเองโดยไม่จำเป็นต้องใช้เซิร์ฟเวอร์ DHCP

ฉันไม่ใช้ DHCPv6 เนื่องจากสามารถจัดการได้โดย radvd และ zeroconf radvd สามารถกำหนดค่าให้ระบุชื่อเซิร์ฟเวอร์และสามารถโฆษณาเซิร์ฟเวอร์จาก /etc/resolv.conf Radvd รุ่นใหม่ยังนำการกระจายรายการค้นหาไปใช้ด้วย

ฉันกำหนดค่า avahi-daemon เพื่อแจกจ่ายบริการชื่อและเซิร์ฟเวอร์ให้กับลูกค้า คุณจะต้องลูกค้าสามารถทำการค้นพบบริการ ฉันไม่ได้ทำการทดสอบการค้นพบบริการมากนักขณะที่ฉันใช้งานเครือข่ายสแต็คคู่ในบอร์ด


แม้ว่าฉันจะใช้เซิร์ฟเวอร์ DHCPv6 หรือ radvd ก็ตามฉันก็ต้องเขียนสคริปต์เพื่อสร้าง dhcpd6.conf หรือ radvd.conf ตามข้อมูล (Prefix และอื่น ๆ ) จากเซิร์ฟเวอร์ DHCPv6 แบบไดนามิก แต่เมื่อการกำหนดค่าใหม่ DHCPv6 เกิดขึ้นจะประกาศข้อมูลใหม่และล้าสมัยไปยังโฮสต์ด้าน LAN ได้อย่างไร ถ้าฉันสร้าง dhcpd6.conf ใหม่หรือ radvd.conf แบบไดนามิกตามเฉพาะข้อมูลใหม่จากเซิร์ฟเวอร์ DHCPv6 Radvd จะประกาศคำนำหน้าก่อนหน้าโดยอัตโนมัติหรือไม่ เซิร์ฟเวอร์ DHCPv6 ประกาศชื่อเซิร์ฟเวอร์ก่อนหน้านี้ล้าสมัยโดยอัตโนมัติหรือไม่
takaomag

radvd สามารถใช้คำนำหน้า :: / 64 เพื่อรับส่วนเสริมจากอินเทอร์เฟซโดยอัตโนมัติ คุณไม่จำเป็นต้องเขียนการกำหนดค่าใหม่ เซิร์ฟเวอร์ DNS และรายการค้นหาควรเป็นข้อมูลคงที่ การกำหนดค่าอัตโนมัติของ IPv6 ถูกออกแบบมาเพื่อจัดการกับที่อยู่การย้ายข้อมูล ฉันไม่รู้ว่า ISP ของคุณรองรับการเปลี่ยนแปลงได้ดีเพียงใด ฉันไม่ได้ดู DHCPv6
BillThor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.