다음과 같은 네트워크 구성이 있습니다.
# 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
ipv6 주소를 ping 할 수 없습니다 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 테이블 의 규칙 을 통과 할 수있는 패킷이 없습니다 . 입력 체인 정책 ( 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 주소를 ping 할 수 없어서 어떻게해야합니까?
그들은 또한 내 ISP에 ipv6이 없으면 (대여, ipv6 항목이 없음) ipv6을 비활성화하고 이전에을 사용 하여이 작업을 수행해야한다고 말합니다 ipv6.disable=1
. 에서 비슷한 질문을했으며 meta.stackoverflow.com
ipv6을 비활성화해서는 안된다는 답변을 받았습니다.
어떻게해야할지 모르겠습니다. 연결 문제가 있습니다. 때때로 스택 교환 또는 Google에서 페이지에 액세스 할 수 없다는 것을 의미합니다. pastebin.com에도 문제가 있습니다. 각각의 경우에 동일한 증상이 있습니다. 브라우저에 주소를 입력 한 후 사이트에 액세스하기 위해 몇 분 정도 기다려야하며 2-3 번 다시로드 한 후에는 적어도 특정 시간.
icmpv6
규칙을 추가 했지만 20 / 분으로 제한했으며 패킷이 거기에 있다는 것을 알 수 있습니다.ping6 -I eth0 fe80::2e0:4cff:fe75:309
작동합니다.