分类 杂七杂八 下的文章

安装

sudo yum update
sudo yum install pptpd
或者
sudo apt update
sudo apt install pptpd

配置

主要为四个文件

/etc/pptpd.conf 配置点对点的网段

localip 10.6.0.1
remoteip 10.6.0.2-254

/etc/ppp/chap-secrets 认证的账号密码

username pptpd passwd *

/etc/ppp/options.pptpd 配置要使用的协议,推荐这么配置

# PPTP连接的名称
name pptpd
# 锁定TTY设备以防止其他进程访问
lock
# 要求使用128位MPPE加密
require-mppe-128
# 要求使用MS-CHAP版本2身份验证协议
require-mschap-v2
# 设置最大传输单元大小为1496字节
mtu 1496
# 拒绝使用PAP身份验证
refuse-pap
# 拒绝使用EAP身份验证
refuse-eap
# 拒绝使用CHAP身份验证
refuse-chap
# 拒绝使用MS-CHAP身份验证
refuse-mschap
# 不启用BSD压缩
nobsdcomp
# 不进行压缩
nodeflate
# 指定第一个DNS服务器为114.114.114.114
ms-dns 114.114.114.114
# 指定第二个DNS服务器为8.8.4.4
ms-dns 8.8.4.4

如果dns不生效配置/etc/ppp/options

# /etc/ppp/options 配置文件
# 禁用Async Map,将所有字符都传输
asyncmap 0
# 使用用户认证,允许用户名和密码验证
auth
# 使用RTS/CTS硬件流控制
crtscts
# 锁定TTY设备以防止其他进程访问
lock
# 隐藏密码(在日志等输出中)
hide-password
# 模拟调制解调器连接
modem
# 设置LCP Echo间隔为30秒
lcp-echo-interval 30
# 设置LCP Echo失败计数为4次
lcp-echo-failure 4
# 禁用IPX协议
noipx
# 指定第一个DNS服务器为114.114.114.114
ms-dns 114.114.114.114
# 指定第二个DNS服务器为8.8.4.4
ms-dns 8.8.4.4

防火墙和转发

# 向sysctl.conf文件中追加net.ipv4.ip_forward的设置,启用IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

# 使sysctl.conf中的修改生效
sysctl -p

# 停止并禁用firewalld服务(CentOS 7默认的防火墙服务)
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 安装iptables-services软件包,该软件包包含iptables命令
sudo yum install iptables-services

# 启用iptables服务,使其在系统启动时自动启动
sudo systemctl enable iptables

# 启动iptables服务
sudo systemctl start iptables

# 清空所有iptables规则
sudo iptables -F

# 将INPUT链的默认策略设置为ACCEPT(允许所有输入流量)
sudo iptables -P INPUT ACCEPT

# 将FORWARD链的默认策略设置为ACCEPT(允许所有转发流量)
sudo iptables -P FORWARD ACCEPT

# 将OUTPUT链的默认策略设置为ACCEPT(允许所有输出流量)
sudo iptables -P OUTPUT ACCEPT

# 在NAT表中添加一个POSTROUTING规则,实现内网地址转换(NAT)并启用MASQUERADE功能
# 将10.6.0.0/24网段的数据包通过ens192网卡进行出口转发
iptables -t nat -A POSTROUTING -j MASQUERADE -s 10.6.0.0/24 -o 主网卡名称

# 添加一个FORWARD规则,修改TCP数据包的最大段大小(MSS)为1300字节
# 该规则适用于来自10.6.0.0/24网段的TCP连接的数据包
iptables -A FORWARD -p tcp --syn -s 10.6.0.0/24 -j TCPMSS --set-mss 1300

启动

systemctl enable pptpd
systemctl start pptpd

openwrt 上使用

在/etc/config/network添加以下内容重启network服务


config interface 'vpn2'
    option proto 'pptp'
    option username 'myusername'
    option buffering '1'
    option ipv6 '0'
    option auto '1'
    option server 'myip'
    option password 'mypasswd'
    #option encryption 'mppe'
    #option pppd_options 'ms-dns 8.8.8.8 ms-dns 8.8.4.4 noaccomp noccp nobsdcomp nodeflate'

1、地图二进制分析

file = open("ditu.pgm",mode="rb")
data = file.read()
print(data[:15])

打开地图输出前15个字节,输出为

b'P6\n747\n596\n255\n'

分别代表,p6地图格式,757为宽,596为高,255为色彩饱和度为0-255

print(len(data))

输出文件的总长度为1335651个字节

1335651

1335651 - 15 = 747 X 596 X 3

刚好是3通道的747 * 596的像素点

2、代码

转换为numpy列表,shape必须是(height, weight, 3),opencv的imwrite才可以导出

整体代码

import numpy as np
import cv2
file = open("ditu.pgm",mode="rb")
data = file.read()
data = data[15:]
weight = 747
height = 596
data = map(lambda x:int(x),data)
data = list(data)
data = np.array(data)
data = data.reshape((height, weight, 3))
data = data[:,:,[2, 1, 0]]   # rgb的通道顺序转换
# data = data/255
cv2.imwrite("1.png",data)

问题描述

配置完基础路由后页面不显示,且报错

vue.esm.js?efeb:5103 [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'matched')"

found in

---> <App> at src/App.vue
       <Root>
vue.esm.js?efeb:3765 TypeError: Cannot read properties of undefined (reading 'matched')
    at render (vue-router.esm.js?94f4:354:1)
    at createFunctionalComponent (vue.esm.js?efeb:4855:1)
    at createComponent (vue.esm.js?efeb:4995:1)
    at _createElement (vue.esm.js?efeb:1821:1)
    at createElement$1 (vue.esm.js?efeb:1771:1)
    at vm._c (vue.esm.js?efeb:2489:1)
    at Proxy.render (App.vue?edc5:17:1)
    at Vue._render (vue.esm.js?efeb:2538:1)
    at VueComponent.updateComponent (vue.esm.js?efeb:2978:1)
    at Watcher.get (vue.esm.js?efeb:4162:1)

image-20221109192435653

代码如下

image-20221109192509522

解决

导入路由必须是小写 router

import router from './router/'

代码修改为

import Vue from 'vue'
import App1 from './App'
import router from './router/'

Vue.config.productionTip = false;

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App1 },
  template: '<App1/>'
})