İp6tables'da kurallar ayarlamak veya ipv6'yı devre dışı bırakmak daha mı iyi?


11

Aşağıdaki ağ yapılandırmasına sahibim:

# 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)

Ağımda DHCP sunucum var ve aşağıdaki kiralamayı alabilirim:

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;
}

Ben ping olabilir 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

IPv6 adresine ping atamıyorum fe80::2e0:4cff:fe75:309:

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

Bazı iptables kuralları (ipv4) ayarladım:

# 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

Ve ipv4 için beklendiği gibi çalışır. Ancak ip6tables'ı kontrol ettiğimde, bazı paketlerin oraya gittiğini görebiliyorum:

# 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

Ben takip bu kılavuzu ve onlar (IPv6) iptables (ipv4) konfigürasyonuna kopyalayıp ip6tables yapıştırın gerektiğini söylüyorlar. Ama bunu yaptığımda, hiçbir paket RELATED,ESTABLISHEDipv6 tablosundaki kuraldan geçemez. Hepsi INPUT zincir politikası ( DROP) nedeniyle kaldırılmıştır .

# 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

Gördüğünüz gibi çıktı paketi yok, neden google ve yığın değişimi makineme bağlanmaya çalışıyor? Ve bunu nasıl yapıyorlar çünkü ipv6 adresime ping atamıyorum bile?

Onlar da benim ISS ipv6 yoksa (kira, ipv6 girişi yok) ipv6 devre dışı bırakmalı ve bunu kullanarak önce yapmıştı diyorlar ipv6.disable=1. Ben de benzer bir soru sordum meta.stackoverflow.comve ipv6'yı devre dışı bırakmamam gereken bir cevap aldım.

Ne yapacağım hakkında hiçbir fikrim yok. Bazı bağlantı sorunlarım var, yani bazen yığın değişimindeki sayfalara erişemiyorum veya google, pastebin.com ile ilgili de sorun yaşıyorum. Her durumda aynı belirtiler vardır - tarayıcımda bir adres yazdıktan sonra, siteye erişmek için bazen birkaç dakika beklemek zorundayım ve 2-3 kez yeniden yükledikten sonra, en azından bir belirli bir süre.

Yanıtlar:


13

IPv6 adresiniz ile başlar fe80:ve bu nedenle yerel bağlantı adresidir. Bu adresler yalnızca ağ arayüzüyle aynı bağlantıda kullanılabilir. Aynı bağlantı yerel alt ağ her ağda bulunmaktadır Çünkü belirtmek gerekir arayüz hangi Kullanmak istediğiniz arayüz. Örneğin, bağlantı yerel bir adrese ping atmak istediğinizde.

Aşağıdaki ping6örneklerden birini deneyin . Her ikisi de aynı şeyi yapar:

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

Bu ayrıca, yalnızca yerel bağlantınızdaki (LAN) sistemlerin, sisteminize bağlanmak için bu bağlantı yerel adresini kullanabileceği anlamına gelir. Yönlendiriciler bu adresleri yönlendirmez. Google veya Stack Exchange'in makinenize IPv6 trafiği göndermesinin bir yolu yoktur, çünkü makinenize bunlardan erişilebilen / yönlendirilebilen bir IPv6 adresi yoktur.

Peki, ne IPv6 trafiği olan size arayüzünde görerek? Muhtemelen mDNS ( çok noktaya yayın DNS ) ve yerel bağlantıya otomatik olarak bağlanabilen diğer protokoller. Örneğin Apple Airplay ve Windows Home Group .

Güvenlik duvarınız kurallar çok önemli bir şey eksik: ICMPv6. IPv6, ICMP'yi IPv4'ten çok daha fazla kullanır ve ICMP paketlerinin içeri girmesine izin vermemek, o trafikle ilgili hata iletileri almayacağınız için trafiğinizi ciddi şekilde kırabilir. Bu uzun gecikmelere / zaman aşımlarına neden olabilir. ICMPv6 trafiğine izin vermek genellikle zarar vermez, bu nedenle bunu güvenlik duvarı kurallarınıza ekleyebilirsiniz:

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ping6Paketleri engellemek istiyorsanız (gerçekten neden bu günlerde hala bunu yaptığını anlamasam da, hata ayıklama bağlantısını çok daha zorlaştırıyor), önceki ACCEPTsatırdan önce olduğu gibi ekleyebilirsiniz :

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

Bu, makinenize gerçek global IPv6 bağlantısı aldığınızda çoğunlukla önemlidir, ancak buna hazırlanırsanız zarar vermez :-)


1
Şimdi anladım. icmpv6Kuralı ekledim ancak 20 / dak ile sınırlı kaldım ve paketlerin oraya gittiğini görebiliyorum. ping6 -I eth0 fe80::2e0:4cff:fe75:309ayrıca çalışır.
Mikhail Morfikov

2

Her zaman, sistemleri yönetirken, açık bir şekilde söz konusu sistemdeki hizmetleri sağlamak için ihtiyaç duymadığım her şeyin kapatılması gerektiği pozisyonunu alırım . Bu felsefe her şeye gider:

  • gereksiz yazılımların kaldırılması
  • sunucuda GUI masaüstünü devre dışı bırakma
  • gereksiz donanımı devre dışı bırakma ve / veya hariç tutma
  • IPv6'yı devre dışı bırakma
  • gereksiz hizmetleri devre dışı bırakma
  • vb.

Aynı felsefeye sahibim, ama bu durumda ne yapacağımı gerçekten bilmiyorum. Bazıları ipv6'yı devre dışı bırakmam gerektiğini söylüyor, diğerleri farklı bir şey söylüyor. IPV6 devre dışı bırakıldığında bile sorun yaşıyorum.
Mikhail Morfikov

@MikhailMorfikov - ISS'niz, müşterilerinin sadece ISS'ye erişmek için IPv6 kullanmalarını sağladıkları herhangi bir proxy / NAT gerçekleştiriyor mu? Bunun sizin için bir sorun olduğunu düşünmüyorum, aksi takdirde bir IPv6 adresiniz olurdu, ancak bunu düşündünüz.
slm

Hiçbir fikrim yok, belki de onlara sormalıyım ve belki bir şeyler yapacaklar ve sorunu çözecekler.
Mikhail Morfikov

2

Ayrıca ISS'm ipv6 yoksa (kiralamada ipv6 girişi yok) ipv6'yı devre dışı bırakmam gerektiğini ve ipv6.disable = 1 kullanarak daha önce yapmış olduğumu söylüyorlar. Benzer soruyu meta.stackoverflow.com'da sordum ve ipv6'yı devre dışı bırakmamam gereken bir cevap aldım.

Elbette DHCP ile bir IPv6 adres kiralaması görmezsiniz - DHCPv6 bunun için kullanılır: DHCP ve DHCPv6 uyumlu değildir.

IPv6'yı kapatma veya kapatma: İhtiyacınız yoksa ve İSS'niz henüz sağlamıyorsa, kapatın, ancak tanıtımına hazırlanın . Bu, sabit kodlu IP adresleri veya yayın kullanma gibi eski IP'ye açıkça dayanan her şeyi kaldırmayı / yeniden tasarlamayı içerir.

Apropos IPv6'yı kapatır: örneğin Microsoft'un IPv6'yı işletim sisteminin ayrılmaz bir parçası olarak gördüğüne dikkat edin, bu nedenle IPv6'yı kapatmak, onlardan aldığınız desteği etkileyebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.