开启路由功能
$ cat/proc/sys/net/ipv4/ip_forward
如果值为 1,表示开启了路由功能,如未开启,需要在 /etc/sysctl.conf 中设置:
net.ipv4.ip_forward=1
然后执行 sysctl -p 使之生效。
实践
创建两个网络 namespace:
$ ip netns add ns1
$ ip netns add ns2
创建两对 veth-pair,一端分别挂在两个 namespace 中:
$iplinkadd v1type veth peer name v1_r$iplinkadd v2type veth peer name v2_r$iplink setv1netns ns1$iplink setv2netns ns2
分别给两对 veth-pair 端点配上 IP 并启用:
$ ip a a 10.10.10.1/24 dev v1_r$ ip l s v1_r up$ ip a a 10.10.20.1/24 dev v2_r$ ip l s v2_r up$ ip netnsexecns1 ip a a 10.10.10.2/24 dev v1$ ip netnsexecns1 ip l s v1 up$ ip netnsexecns2 ip a a 10.10.20.2/24 dev v2$ ip netnsexecns2 ip l s v2 up
测试:
$ ip netnsexecns1 ping 10.10.20.2
发现不通。
添加路由
查看路由:
$ ip netnsexecns1 route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 v1
只有一条直连路由,没有去往 10.10.20.0/24 网段的路由,怎么通?那就给它配一条:
$ ip netnsexecns1 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.10.1$ ip netnsexecns1 route -n
同理也给 ns2 配上去往 10.10.10.0/24 网段的路由:
$ ip netnsexecns2 route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.20.1$ ip netnsexecns2 route -n
再次测试,发现可以 ping 通了:
$ ip netnsexecns1 ping 10.10.20.2
总结
Linux 本身是一台路由器。
上面的实验使用 namespace 效果和使用虚拟机是一样的,关键是知道有这个功能,知道怎么用就差不多了。
linux的路由设置命令主要是route:1、添加路由命令: route add -net 192.168.0.0/24 gw 192.168.0.1 增加一个到192.168.X.X的网段,网关为192.168.0.1。
2、删除路由命令:route del -net 192.168.0.0/24 gw 192.168.0.1
3、新增默认路由:route add default gw 192.168.0.1
4、查询路由表 : route -n
测试网络是否连通
1,ping IP 查看网络数据包是否可达 (首先PING 网关 如果网关都不通的话说明网络或配置有问题。如果网关通,但是没有外网 或PING不通其他网段的网络)那么可以实用下一条!
2,. traceroute Ip(域名)查看你是再哪一跳失败的。 从而检测出 是哪个设备的故障。比如网关 防火墙 路由器 交换机等。
测试端口是否连通
方法一、telnet法
telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式:
telnet ip port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
如果telnet连接不存在的端口,那会如下图所示。
如果telnet 连接存在端口会出现如下图所示的内容,下图中以80端口为例。
方法二、ssh法
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通性,具体用法格式如下:
用法: ssh -v -p port username@ip
说明:
-v 调试模式(会打印日志).
-p 指定端口
username:远程主机的登录用户
ip:远程主机
如果远程主机开通了相应的端口,会有如下图所示的建立成功的提示。
如果远程主机没有开通相应的端口,则如下图所示
方法三、curl法
curl是利用URL语法在命令行方式下工作的开源文件传输工具。也可以用来测试端口的连通性,具体用法:
curl ip:port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。
方法四、wget方法
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是“World Wide Web”与“get”的结合,它也可以用来测试端口的连通性具体用法: 《Linux就该这么学》 学习更多linux命令。
wget ip:port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机不存在端口则会一直提示连接主机。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)