周末的时候写了一篇关于Docker底层支撑技术的文章:
以firejail sandbox解析Docker核心原理依赖的四件套 : https://blog.csdn.net/dog250/article/details/81025071
获得了一些反响,总结下来就三点:
1. 确实这四件套支撑了很多的容器技术;
2. 唱衰Docker以及OverlayFS,Cgroup,NS这些,以为它们违背了某种原则;
3. 关于firejail网络方面的某些细节。
上述的1和2显得过于形而上,保留个人观点不讨论,或者等哪天闲了再说。关于第三点,我觉得有必要梳理一下,本文先说一个典型的。
有网友问到,firejail的Macvlan配置细节是怎样的, firejail容器内的Macvlan虚拟网卡如何访问容器外宿主机的IP地址呢?? ( 先说答案吧,默认情况下,不能访问 )
我并没有深入的了解过firejail,本身接触它也不久,所以只能从其文档代码中去一窥究竟了。firejail的github源在这里: https://github.com/netblue30/firejail
总而言之,firejail使用网络的方式有两种:
Bridge veth的方式:与Docker Bridge模式一致,如果–net参数指定一个Linux Bridge的话。
Macvlan bridge模式:如果–net参数指定一块物理网卡,即会产生一个bridge模式的macvlan虚拟网卡。
这些在其manual中也有提到:
–net=bridge_interface
Enable a new network namespace and connect it to this bridge interface. Unless specified with option –ip and –defaultgw, an IP address and a
default gateway will be assigned automatically to the sandbox. The IP address is verified using ARP before assignment. The address configured as
default gateway is the bridge device IP address. Up to four –net bridge devices can be defined. Mixing bridge and macvlan devices is allowed.
.
Example:
s u o b r c t l a b r b r 0 s
u
d
o
b
r
c
t
l
a
d
d
b
r
b
r
0
sudo ifconfig br0 10.10.20.1/24
s u o b r c t l a b r b r 1 s
u
d
o
b
r
c
t
l
a
d
d
b
r
b
r
1
sudo ifconfig br1 10.10.30.1/24
i r e j a i l – n e t = b r 0 – n e t = b r 1 . – n e t = e t h e r n e t i n t e r a c e n a b l e a n e w n e t w o r k n a m e s p a c e a n c o n n e c t i t t o t h i s e t h e r n e t i n t e r a c e u s i n t h e s t a n a r L i n u x m a c v l a n r i v e r . n l e s s s p e c i i e w i t h o p t i o n – i p a n – e a u l t w , a n a r e s s a n a e a u l t a t e w a w i l l b e a s s i n e a u t o m a t i c a l l t o t h e s a n b o x . h e a r e s s i s v e r i i e u s i n A R b e o r e a s s i n m e n t . h e a r e s s c o n i u r e a s e a u l t a t e w a i s t h e e a u l t a t e w a o t h e h o s t . p t o o u r – n e t e v i c e s c a n b e e i n e . i x i n b r i e a n m a c v l a n e v i c e s i s a l l o w e . o t e : w l a n e v i c e s a r e n o t s u p p o r t e o r t h i s o p t i o n . . x a m p l e : f
i
r
e
j
a
i
l
–
n
e
t
=
b
r
0
–
n
e
t
=
b
r
1
.
–
n
e
t
=
e
t
h
e
r
n
e
t
i