次のネットワーク構成があります。
_# 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を実行できます。
_$ 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
_
私は this ガイドに従って、iptables(ipv4)構成をコピーしてip6tables(ipv6)に貼り付ける必要があると言っています。しかし、これを行うと、パケットはipv6テーブルのルール_RELATED,ESTABLISHED
_を通過できません。 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が私のマシンに接続しようとするのでしょうか。そして、私は自分のipv6アドレスをpingできないので、どうやってそれを行うのですか?
彼らはまた、私のISPにipv6がない場合(リースでは、ipv6エントリがない)と言っています。ipv6を無効にする必要があり、以前に_ipv6.disable=1
_を使用してこれを行っていました。 _meta.stackoverflow.com
_でも同様の質問をしましたが、ipv6を無効にすべきではないという回答を得ました。
私は何をすべきかわからない。接続に問題があります。スタック交換やGoogleでページにアクセスできないことがあります。Pastebin.comにも問題があります。どちらの場合も同じ症状があります-ブラウザにアドレスを入力した後、サイトにアクセスするために数分待たなければならないことがあり、2〜3回リロードした後、少なくとも1秒間は自由に閲覧できます。一定期間。
IPv6アドレスはfe80:
で始まるため、リンクローカルアドレスです。このようなアドレスは、ネットワークインターフェイスと同じリンクでのみ使用できます。すべてのネットワークインターフェイスに同じリンクローカルサブネットが存在するため、使用するwhichインターフェイスを指定する必要があります。たとえば、リンクローカルアドレスにpingを送信する場合です。
次のping6
の例のいずれかを試してください。どちらも同じです:
ping6 fe80::2e0:4cff:fe75:309%eth0
ping6 -I eth0 fe80::2e0:4cff:fe75:309
つまり、ローカルリンク(LAN)上のシステムだけがこのリンクローカルアドレスを使用してシステムに接続できます。ルーターはこれらのアドレスをルーティングしません。 GoogleまたはStack ExchangeがIPv6トラフィックをマシンに送信する方法はありません。これは、マシンに到達可能/ルーティング可能なIPv6アドレスがないためです。
それで、あなたはあなたのインターフェースでどんなIPv6トラフィックを見ていますか?おそらく、mDNS( マルチキャストDNS )や、ローカルリンクに自動的に接続できるその他のプロトコルなどです。たとえば、 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接続を取得する場合に最も重要ですが、すでにその準備をしていれば問題ありません:-)
彼らはまた、私のISPにipv6がない場合(リースには、ipv6エントリがない)と言っています。ipv6を無効にする必要があり、以前にipv6.disable = 1を使用してこれを行っていました。 meta.stackoverflow.comで同様の質問をしたところ、ipv6を無効にすべきではないという回答を得ました。
もちろん、DHCPを使用したIPv6アドレスリースは表示されません。これがDHCPv6の目的です。DHCPとDHCPv6には互換性がありません。
IPv6をオフにするかどうかについて:IPv6が必要なく、ISPからまだ提供されていない場合は、オフにしてくださいただし、その導入に備えて。これには、ハードコードされたIPアドレスやブロードキャストの使用など、レガシーIPに明示的に依存するすべてのものを削除/再設計することが含まれます。
適切にIPv6をオフにする:たとえば、MicrosoftはIPv6をオペレーティングシステムの不可欠な部分と見なしているため、IPv6をオフにすると、それらから得られるサポートに影響を与える可能性があることに注意してください。
私は、システムを管理するときは常に、私がしてはいけないことは何でも明示的にシステムにサービスを提供する必要があるため、オフにする必要があるという立場を取ります。この哲学は、それが次のいずれであっても、すべてに当てはまります。