2015-02-13 25 views
5

Tôi gặp sự cố khi định tuyến lưu lượng từ vùng chứa Docker (phiên bản 1.5.0) trên máy chủ lưu trữ IPv6. nc -w 10 2a00:1450:4010:c07::71 80 kết quả đầu ra nc: connect to 2a00:1450:4010:c07::71 port 80 (tcp) timed out: Operation now in progress.Docker 1.5 trên máy chủ lưu trữ IPv6

Sau this documentationifconfig eth0; ifconfig docker0; ip -6 route show show:

eth0  Link encap:Ethernet HWaddr fa:16:3e:74:4a:b9 
      inet6 addr: fe80::f816:3eff:fe74:4ab9/64 Scope:Link 
      inet6 addr: 2a02:6b8:0:1a71::2329/64 Scope:Global 
      inet6 addr: 2a02:6b8:0:1a71:f816:3eff:fe74:4ab9/64 Scope:Global 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
      RX packets:78994 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:20269 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1000 
      RX bytes:55503363 (55.5 MB) TX bytes:1945660 (1.9 MB) 

docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99 
      inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 
      inet6 addr: fe80::5484:7aff:fefe:9799/64 Scope:Link 
      inet6 addr: fe80::1/64 Scope:Link 
      UP BROADCAST MULTICAST MTU:1500 Metric:1 
      RX packets:90 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:0 
      RX bytes:6528 (6.5 KB) TX bytes:2840 (2.8 KB) 

2001:db8:0:2::/64 dev docker0 metric 1024 
2a02:6b8:0:1a71::/64 dev eth0 proto kernel metric 256 
fe80::/64 dev eth0 proto kernel metric 256 
fe80::/64 dev docker0 proto kernel metric 256 
default via 2a02:6b8:0:1a71::1 dev eth0 metric 2048 mtu 1450 advmss 1390 
default via fe80::1 dev eth0 metric 2049 mtu 1450 advmss 1390 

ifconfig eth0; ip -6 route show trong container:

eth0  Link encap:Ethernet HWaddr 02:42:ac:11:00:09 
      inet addr:172.17.0.9 Bcast:0.0.0.0 Mask:255.255.0.0 
      inet6 addr: fe80::42:acff:fe11:9/64 Scope:Link 
      inet6 addr: 2001:db8:0:2:0:242:ac11:9/64 Scope:Global 
      UP BROADCAST MTU:1500 Metric:1 
      RX packets:1 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:0 
      RX bytes:110 (110.0 B) TX bytes:90 (90.0 B) 

2001:db8:0:2::/64 dev eth0 proto kernel metric 256 
fe80::/64 dev eth0 proto kernel metric 256 
default via fe80::1 dev eth0 metric 1024 

IPv6 và IPv4 định tuyến được kích hoạt (cat /proc/sys/net/ipv6/conf/default/forwarding cho 1cat /proc/sys/net/ipv6/conf/all/forwarding cho 1).

Có vẻ như tôi cần thêm tuyến đường từ docker0 bắc cầu lưu lượng IPv6 đến eth0, nhưng không biết chính xác phải làm gì.

Vui lòng halp!

Trả lời

3

Không nên thực hiện bất kỳ loại NAT nào trong môi trường IPv6, làm mất mục đích của IPv6.

Bạn có thể truy cập vào vùng chứa thông qua IPv6 bằng cách sử dụng đường ống. đường ống cho phép cấu hình mạng linh hoạt hơn:

sudo docker run -t -i --name myimage <image id from `sudo docker images`> /bin/bash 

sudo pipework br4 -i eth1 <container id from `sudo docker ps`> 2001:db8:44::1/[email protected]:db8:44::ff 

sudo ip a a 2001:db8:44::FF/64 dev br4 

Để có thể đạt được chứa của bạn từ Internet, bạn sẽ cần phải gán một địa chỉ IPv6 từ một subnet của IPv6 công cộng của bạn.

Bằng cách gán địa chỉ IPv6 cho giao diện mới trong vùng chứa (eth1), tuyến mặc định IPv4 bị xóa và tuyến mặc định IPv6 mới sẽ trỏ tới cổng mặc định IPv6 mới qua eth1.


giao diện container trước khi áp dụng hệ thống đường ống:

[email protected]:/# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
     valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
494: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:49 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.73/16 scope global eth0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::42:acff:fe11:49/64 scope link 
     valid_lft forever preferred_lft forever 
[email protected]:/# 

giao diện container Sau khi áp dụng hệ thống đường ống: (eth1)

[email protected]:/# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
     valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
498: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:4a brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.74/16 scope global eth0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::42:acff:fe11:4a/64 scope link 
     valid_lft forever preferred_lft forever 
500: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 
    link/ether 1e:0a:3f:b3:15:43 brd ff:ff:ff:ff:ff:ff 
    inet6 2001:db8:44:0:1c0a:3fff:feb3:1543/64 scope global dynamic 
     valid_lft 2591994sec preferred_lft 604794sec 
    inet6 2001:db8:44::1/24 scope global 
     valid_lft forever preferred_lft forever 
    inet6 fe80::1c0a:3fff:feb3:1543/64 scope link 
     valid_lft forever preferred_lft forever 
[email protected]:/# route 
Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
172.17.0.0  *    255.255.0.0  U  0  0  0 eth0 
[email protected]:/# route -6 
Kernel IPv6 routing table 
Destination     Next Hop     Flag Met Ref Use If 
2001:db8:44::/64    ::       UAe 256 0  0 eth1 
2001:d00::/24     ::       U 256 0  0 eth1 
fe80::/64      ::       U 256 0  0 eth0 
fe80::/64      ::       U 256 0  0 eth1 
::/0       2001:db8:44::ff   UG 1024 0  0 eth1 
::/0       fe80::a8bb:ccff:fe00:100 UGDAe 1024 0  0 eth1 
::/0       ::       !n -1 1  3 lo 
::1/128      ::       Un 0 1  0 lo 
2001:db8:44::1/128    ::       Un 0 1  0 lo 
2001:db8:44:0:1c0a:3fff:feb3:1543/128 ::       Un 0 1  0 lo 
fe80::42:acff:fe11:4a/128  ::       Un 0 1  0 lo 
fe80::1c0a:3fff:feb3:1543/128 ::       Un 0 1  0 lo 
ff00::/8      ::       U 256 2  0 eth0 
ff00::/8      ::       U 256 6  0 eth1 
::/0       ::       !n -1 1  3 lo 
[email protected]:/# 

Từ container để Docker chủ ::

[email protected]:/# ping6 2001:db8:44::ff 
PING 2001:db8:44::ff(2001:db8:44::ff) 56 data bytes 
64 bytes from 2001:db8:44::ff: icmp_seq=1 ttl=64 time=0.134 ms 
64 bytes from 2001:db8:44::ff: icmp_seq=2 ttl=64 time=0.062 ms 
64 bytes from 2001:db8:44::ff: icmp_seq=3 ttl=64 time=0.061 ms 
^C 
--- 2001:db8:44::ff ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 1998ms 
rtt min/avg/max/mdev = 0.061/0.085/0.134/0.035 ms 
[email protected]:/# 

Từ chủ Docker để container:

ping6 2001:db8:44::1 
PING 2001:db8:44::1(2001:db8:44::1) 56 data bytes 
64 bytes from 2001:db8:44::1: icmp_seq=1 ttl=64 time=0.092 ms 
64 bytes from 2001:db8:44::1: icmp_seq=2 ttl=64 time=0.072 ms 
64 bytes from 2001:db8:44::1: icmp_seq=3 ttl=64 time=0.074 ms 
64 bytes from 2001:db8:44::1: icmp_seq=4 ttl=64 time=0.075 ms 
^C 
--- 2001:db8:44::1 ping statistics --- 
4 packets transmitted, 4 received, 0% packet loss, time 2997ms 
rtt min/avg/max/mdev = 0.072/0.078/0.092/0.010 ms 
ajn:~/docker/dockergit$ 
1

Đây là giải pháp với NAT:

ip6tables -t nat -A POSTROUTING -s 2001:db8:0:2::/64 ! -o docker0 -j MASQUERADE 

này sẽ cho phép định tuyến từ Docker subnetwork đến trên toàn thế giới.

+0

Đó là không định tuyến, đó là NAT ... –

+0

@SanderSteffann vâng, thay đổi nó để workaround. Bạn có làm thế nào để có được những thứ làm việc mà không có nó? – floatdrop

+0

Xin lỗi, không. Tôi chưa có kinh nghiệm với docker. Với các máy ảo, bạn có thể định tuyến một tiền tố IPv6 tới hộp của bạn và sử dụng nó để định tuyến tới các máy ảo khác nhau hoặc bạn kết nối mạng LAN của mình với các máy ảo. Không có ý tưởng như thế nào docker không nghĩ mặc dù. –

Các vấn đề liên quan