- 如何
ping
要求的是
从源地址发出的包
能够到达目的地址
;从目的地址
返回的包能够到达源地址
- 网关
意思是下一跳地址
ip route
- 查看路由表
ip route |column -t
- 添加路由
- 默认路由
ip route add 0.0.0.0/0 via 0.0.0.0 dev ens3
意思是目的ip
任意的数据包都发给ens3
,via
是网关的意思
- 普通路由
ip route add 10.10.0.0/24 via 0.0.0.0 dev ens3
目的ip
为10.10.10.x
的数据包都会发给ens3
route
- 查看路由表
route -n
- 添加路由表项
- 默认路由
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
- 普通路由
route add -net 10.0.0.0/24 dev br0
意思是目的ip
为10.0.0.x
的数据包会发给br0
- 可以接收域名的路由
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
网友评论