对于您这个问题解答如果你想要解决openwrt该文件已由包提供的问题,你可以尝试以下几种方法:
1. 检查系统更新:可以通过检查最新的系统更新来解决这个问题,可以避免文件冲突的发生,安装正确版本的文件。
2. 检查现有的包:检查现有的包,确认是否安装了最新的版本,如果没有,可以尝试安装最新的包。
3. 删除冲突的文件:可以通过检查错误报告,找出冲突的文件,然后删除掉,以解决冲突的问题。
4. 重新安装openwrt:如果其他方法都不起作用,可以尝试重新安装openwrt,这可以解决文件冲突的问题。
摘要: Docker , 网桥 , Linux , 路由 , 网关 。
网上这个问题出现的挺多的,我也总结一下,因为里面涉及到的网络基础知识比较多的,正好我一直不懂这一块,需要大补。
问题 :openvpn挂vpn连接远程主机,发现无法ping通远程主机IP:172.20.2.52,以前一直可以远程登录。
先 route 一波查看一下路由表,看一下主机访问172.20.2.52的路由路径。
发现和目标IP 172.20.2.52相似的目标网段为 172.20.0.0 ,看后面的接口为 br-3b2a750ddc03 ,也即是说数据被转发到这个接口下,这貌似是个docker创建的网桥,怀疑是docker网桥占用了172.20网段,查看以下docker网络。
看到3b2a750ddc03为命名为milvus的docker网络,原来是milvus的容器创建的网桥,进一步检查网络内部信息。
可以看到所属的容器id和容器名。
可见这个 网络接口下目标主机只有172.20.0.2,172.20.0.3,172.20.0.4三台主机IP,以及172.20.0.1网关,因此ping 172.20.2.52根本ping不通 。
milvus的三个容器虚拟IP以及网关服务占用了172.20网段,openvpn创建的网段也是172.20.0.0,因此在路由中产生 网段冲突 ,无法转发到openvpn的对应网络接口,同理从172.17、18、19、20都是docker创建出来的网络接口和网段,如果有其他网络服务处在相同网段可能导致无法路由到。
在路由寻址时会根据目标IP在路由表中相同网络ID(网段)的记录,根据该记录将数据转发给下一个路由器,如果路由表中存在多条相同网络ID的记录,根据最长匹配算则最吻合的一个,因此增加一个 172.20.2.0/24 的目标网段即可,使用 route add 进行添加,添加目的地网段为172.20.2.0/24,网络接口为tun0。
tun0是openvpn创建的网络接口,使用ifconfig查看。
再看一下路由已经成功添加了一条细路由。
此时再ping 172.20.2.52已经可以ping通。
另一种方法是找到docker网桥对应的容器应用之后直接删除容器,则对应的网络接口和路由都会删除,进入milvus工程目录使用docker-compose停止和删除容器即可。
查看route路由表172.20.0.0网段已经消失,ifconfig,docker network ls都已经查不到对应的网络接口,此时再重启openvpn即可。
docker-compose默认会给每个应用从172.18.0.0依次往后匹配网段,只要容器没有被删除则一直占用网络,如果删除后重启则依次采用新的网段之前的不再使用,因此很容易造成路由冲突,可以在单个docker-compose.yml文件中增加networks配置,设置网段为10.103.0.0/16。
重启docker-compose,此时路由和docker网络都切换为了10.103.0.0/16网段。
修改全局docker网络配置,docker自动分配的网段使用12.11.0.0/16,每个子网掩码划分为 255.255.255.0。
重启docker
再重新启动docker-compose,项目切换为指定的网段。
不仅是docker-compose,docker run启动的容器的虚拟IP也变更为指定的网段。
网关 :网关是一个逻辑概念,网关是一个结点,是一个网络连接到另一个网络的关口, 实质上是一个网络通向其他网络的IP地址 。两个不同网段的网络结点之间通信需要使用网关,如果网络A的主机发现目标主机不在本地网络中就会把数据包发送到A的网关,再转发给网络B的网关,再转发给网络B。
路由器 :路由器是物理设备,路由器可以作为网关使用,通常指的网关就是路由器的IP。主机1.1要发送数据包给主机4.1,因为IP地址不再同一网段,主机会将数据包发送给本网段的网关路由器A。路由器A接收到数据包,查看数据包IP中的目标IP地址,在查找自己的路由表,数据包的目标IP地址是4.1,属于4.0网段,路由器A在路由表中查到4.0网段转发的接口是SO接口。于是,路由表A将数据包从SO接口转发出去。到达了网关路由器B,用同样的转发方法,从EO口转发出去,4.1主机接收发这个数据包。
。
docker-compose中可以设置网络,如果不显示设置网络这些容器都会被加入app_default网络,比如工程目录为test,则启动后的网络名为test_default,使用 docker network ls 可以查看网络列表, docker network inspect <network id> 可以查看对应网络的配置。如果想要工程有特有的网段以及容器有特有的IP则需要在docker-compose.yml中设置自定义要网络,例子如下。
具体的写法是在最下面设置一个工程全局的网络,并且在各个容器服务的最下面引用,在全局下使用subnet设置网段,各容器使用ipv4_address设置IP。重新启动后docker网络已经固定为172.100.0.0/16网段,各容器IP也改为自定义IP。
当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:
1 .目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项。
2 .当计算完路由表中所有的路由项后,择优选择其中一条路由规则。
每一个linux系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息,本地计算机上的任何TCP/IP通信都受到路由表的控制,linux通过route 命令查看 Linux 内核的路由表。
使用案例:
(1)查看所有driver=bridge的docker网络。
(2)删除已经无效的网络。
如果哟啊删除正在使用的网络,需要先断开连接再删除网络。
(3)清理无效网络,想通过这种方法清除历史曾经使用过的网段,但是没有达到预期效果,以后再研究。
双openwrt路由器冲突问题。
1.
检查你的路由器ip地址是否与光猫ip地址冲突。
2.
检查你的两个路由器的ip地址是否冲突。
3.
检查你路由器mac是否冲突,无线mac和lan,wan口mac地址是否与其它设备冲突, 修改mac地址建议使用mac地址生成器里的mac地址,修改好mac地址,把固件恢复出厂设置后生效.。
4.
如果一级路由器访问二级路由器情况下,无法访问二级路由器的时候,需要在一级路由器上设置好静态ip后,二级路由器才可以正常访问。
改个
rs.open "select * from bbs",conn,1,1。
试试
参考:
RS.OPEN SQL,CONN,A,B 。
参数A为设定游标的类型,其取值为:
0 仅向前游标,只能向前浏览记录,不支持分页、Recordset、BookMark 。
1 键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark 。
2 动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览。
3 静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动 。
参数B为记录集的锁定类型,其取值为:
1 锁定类型,默认的,只读,不能作任何修改 。
2 当编辑时立即锁定记录,最安全的方式 。
3 只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等 。
4 当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的 。
打开数据记录集方法其实不止一种,但是我们用的最多的就是 。
rs.open sql,1,1的方法,可是后面的数字参数很多人不解其意,下面我们来介绍一下。
其实open方法后面有多个参数 。
CursorType LockType CommandType 。
比如 rs.open sql,1,1 。
也可以写成
rs.cursorType = 1 。
rs.LockType = 1 。
rs.open sql
其中CursorType代表从一个表或者一个SQL查询结果返回的记录。
这个参数有四个值分别是:
adOpenForwardOnly 表示只允许在记录集内的记录间往前移动。这个是缺省值。
adOpenKeyset 反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新记录的动作。
adOpenDynamic 反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录 。
adOpenStatic 不反映其它用户对记录所做的修改,添加,删除动作。
这四个值VBSCRIPT预定义位 。
adOpenForwardOnly = 0 。
adOpenKeyset = 1 。
adOpenDynamic = 2 。
adOpenStatic = 3 。
lockType 表示当打开记录集时,数据提供者用于锁定数据库的类型:
adLockReadOnly 数据不能改变,这是缺省值!
adLockPessimistic 数据提供者在开始编辑数据的时候锁定记录 。
adLockOptimistic 仅当调用update方法时,数据提供者锁定记录 。
adLockBatchOptimistic 用于批处理修改 。
他们的常量值定义分别是:
adLockReadOnly = 1 。
adLockPessimistic = 2 。
adLockOptimistic = 3 。
adLockBatchOptimistic = 4。
会不会是因为搜的数据为空造成的,添加1、2条相关数据再试。
原文地址:http://www.qianchusai.com/openclash%E7%AC%AC%E4%B8%89%E6%96%B9%E8%A7%84%E5%88%99-50.html