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::110.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テーブルのルールを通過できません。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.disable=1ます。で同様の質問meta.stackoverflow.comをしたところ、ipv6を無効にすべきではないという回答を得ました。

私は何をすべきかわからない。接続に関する問題があります。スタック交換やGoogleでページにアクセスできないことがあります。pastebin.comにも問題があります。どちらの場合も同じ症状があります-ブラウザにアドレスを入力した後、サイトにアクセスするために数分待たなければならないことがあり、2〜3回リロードした後、少なくとも1秒間は自由に閲覧できます。一定期間。

回答:


13

IPv6アドレスはで始まるfe80:ため、リンクローカルアドレスです。このようなアドレスは、ネットワークインターフェイスと同じリンクでのみ使用できます。すべてのネットワークインターフェイスに同じリンクローカルサブネットが存在するため、使用するインターフェイスを指定する必要があります。たとえば、リンクローカルアドレスに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 AirplayWindows 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も動作します。
ミハイルモルフィコフ2014年

2

私は常に、システムを管理するときに、上記のシステムでサービスを提供するために明示的に必要としないものはすべてオフにする必要があるという立場をとっています。この哲学は、それが次のいずれであっても、すべてに当てはまります。

  • 不要なソフトウェアのアンインストール
  • サーバーのGUIデスクトップを無効にする
  • 不要なハードウェアを無効化および/または除外する
  • IPv6を無効にする
  • 不要なサービスを無効にする

私は同じ哲学を持っていますが、この場合、どうすればいいのか本当にわかりません。私はipv6を無効にするべきだと言う人もいれば、別のことを言う人もいます。ipv6を無効にしても問題があります。
ミハイルモルフィコフ2014年

@MikhailMorfikov-ISPにアクセスするためだけに顧客にIPv6を使用させるプロキシ/ NATをISPは実行しますか?これはあなたの問題ではないと思います。さもなければ、IPv6アドレスを持っているでしょうが、考えただけです。
slm

私にはわからない。たぶん私は彼らに尋ねるべきであり、多分彼らは何かをして問題を解決するだろう。
ミハイルモルフィコフ2014年

2

彼らはまた、私のISPにipv6がない場合(リースには、ipv6エントリがない)と言っています。ipv6を無効にする必要があり、以前はipv6.disable = 1を使用してこれを行っていました。meta.stackoverflow.comで同様の質問をしたところ、ipv6を無効にすべきではないという回答を得ました。

もちろん、DHCPを使用したIPv6アドレスのリースは表示されません。これがDHCPv6の目的です。DHCPとDHCPv6には互換性がありません。

IPv6をオフにするかどうかについて:IPv6が不要で、ISPからまだ提供されていない場合は、IPv6をオフにして導入の準備をしてください。これには、ハードコードされたIPアドレスやブロードキャストの使用など、レガシーIPに明示的に依存するすべてのものを削除/再設計することが含まれます。

適切なIPv6の無効化:たとえば、MicrosoftはIPv6をオペレーティングシステムの不可欠な部分と見なしているため、IPv6を無効にすると、OSから得られるサポートに影響する可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.