มันจะดีกว่าที่จะตั้งกฎใน ip6tables หรือปิดการใช้งาน ipv6?


11

ฉันมีการกำหนดค่าเครือข่ายต่อไปนี้:

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:e0:1c:73:02:09
          inet addr:10.1.4.41  Bcast:10.1.255.255  Mask:255.255.0.0
          inet6 addr: fe80::2e0:4cff:fe75:309/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:858600 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1069549 errors:0 dropped:0 overruns:5 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:142871181 (136.2 MiB)  TX bytes:717982640 (684.7 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:37952 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37952 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3396918 (3.2 MiB)  TX bytes:3396918 (3.2 MiB)

ฉันมีเซิร์ฟเวอร์ DHCP ในเครือข่ายของฉันและฉันสามารถขอเช่าได้ดังต่อไปนี้:

lease {
  interface "eth0";
  fixed-address 10.1.4.41;
  option subnet-mask 255.255.0.0;
  option routers 10.1.255.253;
  option dhcp-lease-time 120;
  option dhcp-message-type 5;
  option domain-name-servers 82.160.125.52,213.199.198.248,82.160.1.1;
  option dhcp-server-identifier 192.168.22.22;
  renew 3 2014/01/01 18:34:41;
  rebind 3 2014/01/01 18:35:30;
  expire 3 2014/01/01 18:35:45;
}

ฉันสามารถ ping 127.0.0.1, ::1, 10.1.4.41:

$ ping 10.1.4.41
PING 10.1.4.41 (10.1.4.41) 56(84) bytes of data.
64 bytes from 10.1.4.41: icmp_seq=1 ttl=64 time=0.065 ms
64 bytes from 10.1.4.41: icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from 10.1.4.41: icmp_seq=3 ttl=64 time=0.085 ms
^C
--- 10.1.4.41 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.065/0.075/0.085/0.008 ms

$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.055 ms
^C
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.055/0.059/0.066/0.005 ms

$ ping6 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.037 ms
^C
--- ::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.037/0.046/0.052/0.006 ms

ฉันไม่สามารถ ping ที่อยู่ ipv6 fe80::2e0:4cff:fe75:309:

$ ping6 fe80::2e0:4cff:fe75:309
connect: Invalid argument

ฉันได้ตั้งกฎ iptables (ipv4):

# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N TCP
-N UDP
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A OUTPUT -m conntrack --ctstate INVALID -j DROP

และทำงานได้ตามที่คาดไว้สำหรับ ipv4 แต่เมื่อฉันตรวจสอบ ip6tables ฉันสามารถเห็นแพ็คเก็ตบางอย่างไปที่นั่น:

# ip6tables -nvL
Chain INPUT (policy ACCEPT 381 packets, 27624 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 390 packets, 26296 bytes)
 pkts bytes target     prot opt in     out     source               destination

ฉันทำตามคำแนะนำนี้และพวกเขาบอกว่าฉันควรคัดลอกการกำหนดค่า iptables (ipv4) และวางลงใน ip6tables (ipv6) แต่เมื่อฉันทำสิ่งนี้ไม่มีแพ็กเก็ตที่สามารถผ่านกฎRELATED,ESTABLISHEDในตาราง ipv6 ทั้งหมดถูกปล่อยเนื่องจากนโยบายลูกโซ่ INPUT ( DROP)

# ip6tables -nvL
Chain INPUT (policy DROP 5 packets, 360 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all      eth0   *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0
    0     0 ACCEPT     all      tun0   *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
    0     0 DROP       all      *      *       ::/0                 ::/0                 ctstate INVALID
    0     0 UDP        udp      *      *       ::/0                 ::/0                 ctstate NEW
    0     0 TCP        tcp      *      *       ::/0                 ::/0                 tcp flags:0x17/0x02 ctstate NEW
    0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
    0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all      *      *       ::/0                 ::/0                 ctstate INVALID

Chain TCP (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain UDP (1 references)
 pkts bytes target     prot opt in     out     source               destination

อย่างที่คุณเห็นว่าไม่มีแพ็กเก็ตเอาต์พุตดังนั้นเหตุใดจึงลองใช้ google และ stack exchange เพื่อเชื่อมต่อกับเครื่องของฉัน และพวกเขาจะทำอย่างไรเพราะแม้ฉันไม่สามารถ ping ที่อยู่ ipv6 ของฉันได้

พวกเขายังบอกว่าถ้าฉัน ISP ไม่ได้มี IPv6 (ในการเช่าที่ไม่มีรายการ IPv6) ฉันควรจะปิดการใช้งาน IPv6 ipv6.disable=1และเคยทำแบบนี้มาก่อนโดยใช้ ฉันถามคำถามที่คล้ายกันที่meta.stackoverflow.comและฉันได้รับคำตอบว่าฉันไม่ควรปิดการใช้งาน ipv6

ฉันไม่รู้จะทำยังไง ฉันมีปัญหาในการเชื่อมต่อฉันหมายความว่าบางครั้งฉันไม่สามารถเข้าถึงหน้าเว็บที่ stack exchange หรือ Google ฉันมีปัญหากับ pastebin.com ในแต่ละกรณีมีอาการเหมือนกัน - หลังจากพิมพ์ที่อยู่ในเบราว์เซอร์ของฉันฉันต้องรอบางครั้งหลายนาทีเพื่อเข้าถึงเว็บไซต์และหลังจากโหลดซ้ำ 2-3 ครั้งฉันสามารถเรียกดูได้อย่างอิสระอย่างน้อยสำหรับ ระยะเวลาหนึ่ง

คำตอบ:


13

ที่อยู่ IPv6 ของคุณเริ่มต้นด้วยfe80:ดังนั้นจึงเป็นที่อยู่ลิงค์ท้องถิ่น ที่อยู่ดังกล่าวสามารถใช้งานได้บนลิงก์เดียวกับอินเทอร์เฟซเครือข่าย เพราะเครือข่ายย่อยลิงค์ท้องถิ่นเดียวกันที่มีอยู่บนทุกเครือข่ายอินเตอร์เฟซที่คุณจะต้องระบุที่อินเตอร์เฟซที่คุณต้องการใช้ ตัวอย่างเช่นเมื่อคุณต้องการ ping ที่อยู่ link-local

ลองหนึ่งping6ตัวอย่างต่อไปนี้ ทั้งสองทำสิ่งเดียวกัน:

ping6 fe80::2e0:4cff:fe75:309%eth0
ping6 -I eth0 fe80::2e0:4cff:fe75:309

นี่หมายความว่ามีเพียงระบบในลิงค์ภายในเครื่องของคุณ (LAN ของคุณ) เท่านั้นที่สามารถใช้ที่อยู่ link-local นี้เพื่อเชื่อมต่อกับระบบของคุณ เราเตอร์จะไม่กำหนดเส้นทางที่อยู่เหล่านั้น ไม่มีวิธีที่ Google หรือ Stack Exchange กำลังส่งทราฟฟิก IPv6 ไปยังเครื่องของคุณเนื่องจากเครื่องของคุณไม่มีที่อยู่ IPv6 ที่สามารถเข้าถึงได้ / สามารถกำหนดเส้นทางได้

คุณเห็นการรับส่งข้อมูล IPv6 ใดบนอินเทอร์เฟซของคุณ อาจเป็นได้เช่น mDNS ( multicast DNS ) และโปรโตคอลอื่น ๆ ที่สามารถเชื่อมต่อบนโลคัลลิงค์โดยอัตโนมัติ ยกตัวอย่างเช่นแอปเปิ้ลออกอากาศและWindows บ้านกลุ่ม

กฎไฟร์วอลล์ของคุณไม่มีสิ่งที่สำคัญมาก: ICMPv6. IPv6 ใช้ ICMP มากกว่า IPv4 และการไม่ปล่อยให้แพ็คเก็ต ICMP สามารถทำลายการรับส่งข้อมูลของคุณอย่างรุนแรงเพราะคุณจะไม่ได้รับข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับการรับส่งข้อมูลนั้น สิ่งนี้อาจทำให้เกิดความล่าช้า / หมดเวลานาน โดยทั่วไปการอนุญาตการรับส่งข้อมูล ICMPv6 จะไม่เป็นอันตรายดังนั้นคุณสามารถเพิ่มสิ่งนี้ในกฎไฟร์วอลล์ของคุณ:

ip6tables -A INPUT -p icmpv6 -j ACCEPT

หากคุณต้องการบล็อกping6แพ็คเก็ต (แม้ว่าฉันจะไม่เข้าใจว่าทำไมคนยังคงทำเช่นนั้นในวันนี้มันทำให้การเชื่อมต่อดีบั๊กมากขึ้น) คุณสามารถเพิ่มสิ่งนี้ก่อนหน้าACCEPTบรรทัดก่อนหน้า:

ip6tables -A INPUT -p icmpv6 --icmpv6-type 128 -j DROP

นี่เป็นสิ่งสำคัญส่วนใหญ่เมื่อคุณได้รับการเชื่อมต่อ IPv6 ทั่วโลกที่แท้จริงไปยังเครื่องของคุณ แต่จะไม่เจ็บถ้าคุณเตรียมไว้สำหรับ :-)


1
ฉันเข้าใจแล้ว. ฉันเพิ่มicmpv6กฎ แต่ จำกัด ที่ 20 / นาทีและฉันเห็นว่าแพ็กเก็ตไปที่นั่น ping6 -I eth0 fe80::2e0:4cff:fe75:309ยังใช้งานได้
Mikhail Morfikov

2

ฉันมักจะเข้ารับตำแหน่งเมื่อจัดการระบบสิ่งที่ฉันไม่จำเป็นต้องให้บริการในระบบดังกล่าวอย่างชัดเจนว่าควรจะปิด ปรัชญานี้ไปที่ทุกสิ่งไม่ว่าจะเป็น:

  • ยกเลิกการติดตั้งซอฟต์แวร์ที่ไม่จำเป็น
  • ปิดการใช้งานเดสก์ท็อป GUI บนเซิร์ฟเวอร์
  • ปิดการใช้งานและ / หรือยกเว้นฮาร์ดแวร์ที่ไม่จำเป็น
  • ปิดการใช้งาน IPv6
  • ปิดใช้งานบริการที่ไม่จำเป็น
  • เป็นต้น

ฉันมีปรัชญาเดียวกัน แต่ในกรณีนี้ฉันไม่รู้จะทำอย่างไร บางคนบอกว่าฉันควรปิดการใช้งาน ipv6 ส่วนคนอื่นพูดอะไรที่ต่างออกไป ฉันมีปัญหาแม้เมื่อปิดการใช้งาน ipv6
Mikhail Morfikov

@MikhailMorfikov - ISP ของคุณใช้งานพร็อกซี / NAT ที่พวกเขากำลังทำให้ลูกค้าใช้ IPv6 เพียงเพื่อเข้าถึง ISP ฉันไม่คิดว่านี่เป็นปัญหาสำหรับคุณมิฉะนั้นคุณจะมีที่อยู่ IPv6 แต่คิดว่าเป็นเรื่องของมัน
slm

ฉันไม่มีความคิดบางทีฉันควรถามพวกเขาและบางทีพวกเขาจะทำอะไรบางอย่างและแก้ไขปัญหา
Mikhail Morfikov

2

พวกเขายังบอกด้วยว่า ISP ของฉันไม่มี ipv6 (ในสัญญาเช่าไม่มีรายการ ipv6) ฉันควรปิดการใช้งาน ipv6 และเคยทำสิ่งนี้มาก่อนโดยใช้ ipv6.disable = 1 ฉันถามคำถามที่คล้ายกันที่ meta.stackoverflow.com และฉันได้รับคำตอบว่าไม่ควรปิดใช้งาน ipv6

แน่นอนคุณจะไม่เห็นสัญญาเช่าที่อยู่ IPv6 กับ DHCP - นั่นคือสิ่งที่ DHCPv6 ใช้สำหรับ: DHCP และ DHCPv6 เข้ากันไม่ได้

ในฐานะของการเปลี่ยน IPv6 ปิดหรือไม่: ถ้าคุณไม่จำเป็นต้องใช้และผู้ให้บริการอินเทอร์เน็ตของคุณไม่ให้มันยังไม่ได้ปิดแต่เตรียมความพร้อมสำหรับการเปิดตัว ซึ่งรวมถึงการลบ / ออกแบบใหม่ทุกอย่างที่อาศัย IP ดั้งเดิมอย่างชัดเจนเช่นที่อยู่ IP ที่ใช้รหัสยากหรือใช้การออกอากาศ

แนะนำให้ปิดการใช้งาน IPv6: ระวังเช่น Microsoft พิจารณาว่า IPv6 เป็นส่วนหนึ่งของระบบปฏิบัติการดังนั้นการปิด IPv6 อาจส่งผลกระทบต่อการสนับสนุนที่คุณได้รับจากพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.