linux.network.route

  • 如何ping

要求的是从源地址发出的包能够到达目的地址;从目的地址返回的包能够到达源地址

  • 网关

意思是下一跳地址

  1. ip route
  • 查看路由表
  1. ip route |column -t
  • 添加路由
  1. 默认路由
    ip route add 0.0.0.0/0 via 0.0.0.0 dev ens3
    意思是目的ip任意的数据包都发给ens3via是网关的意思
  2. 普通路由
    ip route add 10.10.0.0/24 via 0.0.0.0 dev ens3
    目的ip10.10.10.x的数据包都会发给ens3

  1. route
  • 查看路由表
  1. route -n
  • 添加路由表项
  1. 默认路由
    route add -net 0.0.0.0 netmask 0.0.0.0 gateway 192.168.122.1 dev eth1
    意思就是目的ip任意的数据包都发给eth1,网关是192.168.122.1
  2. 普通路由
    route add -net 10.0.0.0/24 dev br0
    意思是目的ip10.0.0.x的数据包会发给br0
  3. 可以接收域名的路由
    route add -net 0.0.0.0 gateway 192.168.122.1 dev eth1
  • 下面是一个使用路由表ping通不同网段的实例
#1.    主机
#1.1   添加桥
ovs-vsctl add-br br1

#1.2   创建veth pair,并添加到br1 上
ip link add veth0 type veth peer name veth1
ovs-vsctl add-port br1 veth0
ip li set veth0 up

ovs-vsctl set port veth0 tag=1

#1.3   创建ns1,veth1加进去
ip netns add ns1
ip li set veth1 netns ns1
ip netns exec ns1 ifconfig lo 127.0.0.1 up
ip netns exec ns1 ip li set veth1 up
ip netns exec ns1 ip a add 10.10.0.6/24 dev veth1
ip netns exec ns1 route add -net 10.0.0.0/24 dev veth1

#1.4   创建虚拟机
tunctl -t tap1
ovs-vsctl add-port br1 tap1
ovs-vsctl set port tap1 tag=1
ip li set tap1 up
mac1=`echo "$(hexdump -n3 -e'/3 "00:60:2F" 3/1 ":%02X"' /dev/random)"`
qemu-system-x86_64  centos1804_200G.qcow2 -m  1024  -net  nic,macaddr=$mac1  -net tap,ifname=tap1,script=no,downscript=no   -enable-kvm &

#2.    虚拟机
ip li set ens3 up
ip a add 10.0.0.6/24 dev ens3
ip route add 10.10.0.0/24 via 0.0.0.0 dev ens3

#3.    测试
#3.1   虚拟机ping主机
ping 10.10.0.6
#3.2   主机ping虚拟机
ip netns exec ns1 ping 10.0.0.6

注:1.2 1.3中的veth pair可用vlan代替

#1.2   创建ns1,创建br1的端口并添加进去
ip netns add ns1
ovs-vsctl add-port br1 tap2 tag=1 -- set interface tap2 type=internal
ip li set tap2 netns ns1
ip netns exec ns1 ifconfig lo 127.0.0.1 up
ip netns exec ns1 ip li set tap2 up
ip netns exec ns1 ip a add 10.10.0.6/24 dev tap2
ip netns exec ns1 route add -net 10.0.0.0/24 dev tap2

你可能感兴趣的:(linux.network.route)