Чи краще встановити правила в 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;
}

Я можу свистіти 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 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 та обмін стеками намагаються підключитися до моєї машини? І як вони це роблять, бо навіть я не можу пінг моєї ipv6 адреси?

Вони також кажуть, якщо мій провайдер не має ipv6 (в оренді немає ipv6), я повинен відключити ipv6 і робив це раніше, використовуючи ipv6.disable=1. Я задав подібне запитання на meta.stackoverflow.com, і я отримав відповідь, що я не повинен відключати ipv6.

Я поняття не маю, що робити. У мене є деякі проблеми з підключенням, я маю на увазі, що іноді я не можу отримати доступ до сторінок при обміні стеками, або в Google, у мене також є проблеми з pastebin.com. У кожному випадку є одні й ті ж симптоми - після введення адреси у своєму браузері мені доводиться іноді чекати кілька хвилин, щоб отримати доступ до сайту, а після перезавантаження його 2-3 рази я можу вільно переглядати його, принаймні на певний проміжок часу.

Відповіді:


13

Ваша IPv6-адреса починається з fe80:і тому є локальною адресою посилання. Такі адреси можна використовувати лише на тому ж посиланні, що і мережевий інтерфейс. Оскільки однакова локальна підмережа посилань існує на кожному мережевому інтерфейсі, вам потрібно буде вказати, який інтерфейс ви хочете використовувати. Наприклад, коли ви хочете ввести місце в локальну адресу.

Спробуйте один із наступних ping6прикладів. Обидва роблять те саме:

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

Це також означає, що лише системи на вашому локальному посилання (ваша локальна мережа) можуть використовувати цю локальну адресу для підключення до вашої системи. Маршрутизатори не спрямовуватимуть ці адреси. Ні в якому разі Google або Stack Exchange не надсилають трафік IPv6 на ваш комп'ютер, оскільки ваша машина не має IPv6-адреси, яка доступна для них / маршрутизація.

Отже, що IPv6 трафіку є ви бачите на вашому інтерфейсі? Можливо, такі речі, як mDNS ( багатоадресна передача даних ) та інші протоколи, які можуть автоматично підключатися за локальним посиланням. Наприклад, Apple Airplay та Windows Home Group .

Ваші правила брандмауера не вистачає дуже важливу річ: 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також працює.
Михайло Морфіков

2

Я завжди вважаю, що при управлінні системами я вважаю, що все, що мені явно не потрібно для надання послуг у зазначеній системі, воно повинно бути вимкнено. Ця філософія стосується всього, будь то:

  • видалення зайвого програмного забезпечення
  • відключення робочого столу GUI на сервері
  • відключення та / або виключення нецільового обладнання
  • відключення IPv6
  • відключення нецензурних послуг
  • тощо.

У мене така ж філософія, але в цьому випадку я дійсно не знаю, що робити. Одні кажуть, що я повинен відключити ipv6, інші говорять про щось інше. У мене є проблеми, навіть коли ipv6 вимкнено.
Михайло Морфіков

@MikhailMorfikov - чи здійснює ваш Інтернет-провайдер будь-який проксі / NAT, де вони змушують своїх клієнтів використовувати IPv6 лише для доступу до провайдера. Я не думаю, що це проблема для вас, інакше ви мали б адресу IPv6, але просто подумали про це.
slm

Я поняття не маю, можливо, я повинен їх запитати, а можливо, вони щось зроблять і виправлять проблему.
Михайло Морфіков

2

Вони також кажуть, якщо мій провайдер не має ipv6 (в оренді немає ipv6), я повинен відключити ipv6 і робив це раніше, використовуючи ipv6.disable = 1. Я задавав подібне запитання на meta.stackoverflow.com, і я отримав відповідь, що я не повинен відключати ipv6.

звичайно, ви б не побачили оренду адреси IPv6 за допомогою DHCP - ось для чого DHCPv6: DHCP і DHCPv6 не сумісні.

Що стосується вимкнення IPv6 чи ні: Якщо він вам не потрібен і ваш провайдер ще не надає його, вимкніть його, але підготуйтеся до його введення . Сюди входить видалити / переробити все, що явно покладається на застарілий IP, наприклад, жорстко кодовані IP-адреси або використання широкомовної програми.

Проблеми відключення IPv6: будьте обережні, наприклад, що Microsoft вважає IPv6 невід'ємною частиною операційної системи, тому відключення IPv6 там може вплинути на підтримку, яку ви отримуєте від них.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.