网络
直连
添加两个命名空间ns1 ns2
ip netns add ns1
ip netns add ns2
每个网络命名空间有自己的网路和端口
ip netns exec ns1 ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
需要网卡veth,成对出现
ip link add veth1 type veth peer name veth2
[root@node3 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:5f:aa:08 brd ff:ff:ff:ff:ff:ff
inet 192.168.164.14/24 brd 192.168.164.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fd15:4ba5:5a2b:1008:1ef3:cc2:a7c:fbdf/64 scope global noprefixroute dynamic
valid_lft 2591954sec preferred_lft 604754sec
inet6 fe80::9d93:f6c8:28fd:503f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: veth2@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 82:96:6d:9f:aa:9f brd ff:ff:ff:ff:ff:ff
4: veth1@veth2: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ea:01:38:0a:a1:7a brd ff:ff:ff:ff:ff:ff
网卡移动到ns1中
ip link set veth1 netns ns1
ip netns exec ns1 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
4: veth1@if3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ea:01:38:0a:a1:7a brd ff:ff:ff:ff:ff:ff link-netnsid 0
ip link set veth2 netns ns2
启动网卡
ip netns exec ns1 ip link set dev veth1 up
ip netns exec ns2 ip link set dev veth2 up
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
3: veth2@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 82:96:6d:9f:aa:9f brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::8096:6dff:fe9f:aa9f/64 scope link
valid_lft forever preferred_lft forever
设置网卡的ip地址
ip netns exec ns1 ip a a 192.168.0.2/24 dev veth1
ip netns exec ns2 ip a a 192.168.0.3/24 dev veth2
ip netns exec ns1 ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.082 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.075 ms
^C
ip netns exec ns2 ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.055 ms
^C
centos安装docker
会自动安装一个docker0的bridge
docker pull springcloud/eureka:latest
docker run -dit --name eureka -p 8761:8761 springcloud/eureka:latest
Bridge
添加bridge br0起到了交换机的作用
ip link add br0 type bridge
ip link set br0 up
添加两个网卡对
ip link a veth11 type veth peer name br-veth11
ip link a veth22 type veth peer name br-veth22
将一对分别移动到ns1 ns2
ip link set veth11 netns ns1
ip link set veth22 netns ns2
剩下的移动到bro
ip link set br-veth11 master br0
ip link set br-veth22 master br0
启动所有网卡设备
ip link set br-veth11 up
ip link set br-veth22 up
ip netns exec ns1 ip link set dev veth11 up
ip netns exec ns2 ip link set dev veth22 up
设置Ip地址
ip netns exec ns1 ip address add 192.168.0.11/24 dev veth11
ip netns exec ns2 ip address add 192.168.0.12/24 dev veth22
ping对方ip
ip netns exec ns1 ping 192.168.0.12
[root@node3 ~]# ip netns exec ns1 ping 192.168.0.12
PING 192.168.0.12 (192.168.0.12) 56(84) bytes of data.
64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=0.249 ms
64 bytes from 192.168.0.12: icmp_seq=2 ttl=64 time=0.057 ms
64 bytes from 192.168.0.12: icmp_seq=3 ttl=64 time=0.061 ms
^C
从外部主机无法访问 192.168.0.11 跨网络找路由
为br0设置一个ip
ifconfig br0 192.168.0.1/24 up
[root@node3 ~]# ip route
default via 192.168.164.1 dev ens33 proto static metric 100
192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.1
192.168.164.0/24 dev ens33 proto kernel scope link src 192.168.164.14 metric 100
[root@node3 ~]# ping 192.168.0.11
PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
64 bytes from 192.168.0.11: icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from 192.168.0.11: icmp_seq=2 ttl=64 time=0.121 ms
64 bytes from 192.168.0.11: icmp_seq=3 ttl=64 time=0.118 ms
^C
--- 192.168.0.11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.062/0.100/0.121/0.028 ms