title | date | tags | categories | |||
---|---|---|---|---|---|---|
Linux网络管理 |
2018-12-15 03:15:55 -0800 |
|
|
💠
-
- 1.1. 内核配置
- 1.2. DNS
- 1.3. Route
- 1.3.1. traceroute
- 1.4. IPv4和IPv6
- 1.5. Bridge
- 1.6. Socket
- 1.7. TCP/UDP 工具
- 1.8. 复合工具
-
- 2.1. 自签发证书
💠 2024-09-29 23:35:37
ip_local_port_range Linux increase ip_local_port_range TCP port range
iftop
- nethogs
流量监控
- slurm 网卡带宽监控
来自 dnsutils 包
快速使用 nslookup jd.com 223.5.5.5
nslookup - 8.8.8.8
进入 REPL 方便调试, 8.8.8.8 是Google开放的DNS 备选 8.8.4.4- 结果解释:Non-authoritative answer: 表示这是从缓存得到的结果,不一定准确
- Server:上连DNS服务器的IP, Address:
上连DNS的IP#端口
通常是53 - canonical name 即CNAME 别名
比 nslookup 更强大 Domain Information Groper
快速使用 dig @8.8.8.8 www.baidu.com
dig [option] @8.8.8.8 www.baidu.com
- @xxx 指定DNS服务器
- -p 53 指定DNS服务器端口
- +tcp 采用TCP进行DNS通信(默认UDP)
- +short 精简输出
- +nocmd+nocomment+nostat 输出最核心内容
- -p
dog
类似dig
- 在
/etc/resolv.conf
中添加Google的DNS (阿里云 DNS 223.5.5.5 223.6.6.6)
nameserver 8.8.8.8
nameserver 8.8.8.4
刷新本地缓存
- sudo /etc/init.d/nscd restart 或者 service nscd restart , 其实就是重启 nscd 服务
Linux-router
Linux作为路由器
显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况
traceroute [选项] [远程主机名或IP地址] [数据包大小]
- -i<网络接口> : 使用指定的网络接口发送数据包
- -n : 直接使用IP地址而不使用主机名
- -v : 详细显示命令的执行过程
- -w<超时秒数> : 设置等待远程主机回应的时间
- -x : 开启或者关闭对数据包的正确性校验
- -s<来源IP> : 设置本机主机发送数据包的IP地址
- -g<网关地址> : 设置来源的路由网关,最多可设置8个
traceroute -I stackoverflow.com
icmp 查看路由表
NTrace-core
可视化
- IPv4 只有32bit IPv6 有128bit
IPv6
- 零省略 :如果有一位是 000C 可以直接写C
- 零压缩 :如果FE04:0:0:0:0:0:0:DA 写成 FE::DA
网桥, 通常使用 bridge-utils 的 brctl 进行管理
- Learn
增加
删除
配置开机启动
一个socket的五个必要元素: client_ip:client_port<----->server_ip:server_port + 协议
/etc/sysctl.conf
动态端口范围: net.ipv4.ip_local_port_range=32788 60000 修改时不能超过[1024,65535]范围
-
强制关闭tcp连接: killcx tcpkill
-
iperf3
: TCP UDP 测速, 在两个节点上使用iperf启动服务端和客户端进程,从而计算TCP和UDP指标信息 Ethr Golang 仿写
netstat lsof fuser
-
lsof -i:端口号
用于查看某一端口的占用情况,缺省端口号显示全部- 或者
cat /etc/services
查看系统以及使用的端口
- 或者
-
查询占用端口
fuser -v -n tcp 22
或者fuser -v 22/tcp
fuser中含三种协议: file 默认, tcp, udp- 得到一些进程信息
fuser -v -n tcp 0
- 得到一些进程信息
-
whatportis 可以通过服务查询默认端口,或者是通过端口查询默认服务的工具
-
tcpdump -i eth0 -nn -X 'port 53' -c 1
root用户才有运行权限- -i 指定监听的网络接口(网卡)
- -nn 将协议号或端口号,显示数字,而不是名称例如:21 而不显示 FTP
- -X 将协议头和包内容完整的显示出来
- port 53 过滤,只显示53端口相关的包
- -c 抓包的数量
- -e 输出以太网帧头部信息输出 (能看到mac地址)
- -l 输出变为行缓冲
- -t 输出不打印时间戳
- -v 输出更详细信息
- -F 指定过滤表达式所在的文件
- -w 将流量保存到文件中
- -r 读取raw packets 文件
-
列出可以选择的抓包对象
tcpdump -D
(USB设备也能抓?)
参考书籍 《Linux 大棚命令百篇》
inetutils-ping ICMP protocol
- ping URL : Linux是默认无休止的
- -c 次数
- -q 安静模式 不输出
- -s 默认64字节
- -t 设定 TTL值,Linux默认是64或255 经过一个路由器就会减一
- -i 每次ping的时间间隔 默认1s root用户才可以设置 0.2 以下
- -f 暴力尽可能大量包的传送 至少每秒100个
- 注意:得到的结果中的 mdev 表示ICMP包的RTT偏离平均值的程度,mdev 越大表示网速不稳定 Linux有,mac下叫stddev win系列没有
- -r 记录经过的路由 (路由节点均支持ICMP协议)
- ping -s 1472 -M do 192.168.15.205 测试网络环境下最大可用MTU
- Github: tcping
测试tcp连接延迟
Traffic Control
-
限速
tc qdisc add dev eno1 root tbf rate 400kbit latency 1ms burst 1000
-
解除
tc qdisc del dev eno1 root tbf rate 400kbit latency 1ms burst 1000
- tbf : 令牌桶算法
-
网卡100%丢包
tc qdisc add dev enp3s0 root netem loss 100%
移除限制: add 换成 del -
移除指定网卡添加的所有规则
tc qdisc del dev enp3s0 root
-
指定IP网段 丢包
#! /bin/sh
interface=enp3s0
ip=192.168.16.0/24
delay=30ms
loss=90%
tc qdisc add dev $interface root handle 1: prio
# 此命令立即创建了类: 1:1, 1:2, 1:3 ( 缺省三个子类 )
tc filter add dev $interface parent 1:0 protocol ip prio 1 u32 match ip dst $ip flowid 2:1
# 在 1:1 节点添加一个过滤规则 , 优先权 1: 凡是去往目的地址是 $ip( 精确匹配 ) 的 IP 数据包 , 发送到频道 2:1.
tc qdisc add dev $interface parent 1:1 handle 2: netem delay $delay loss $loss
相关 iproute2
-
netstat -tunlp | grep 端口号
用于查看指定的端口号的进程情况 -
参数
-p
显示建立相关连接的程序名和PID 需要root-a
显示本机所有连接和监听端口-n
以网络IP地址的形式显示当前建立的有效连接和端口-r
显示路由表信息-s
显示协议的统计信息。-v
显示当前的有效连接-t
显示所有的TCP协议连接情况-u
显示所有的UDP协议连接情况-c<秒数>
后面跟的秒数,表示每个几秒就刷新一次显示-i
显示自动配置接口的状态-l
仅显示连接状态为“LISTEN”的服务的网络状态
-
netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c| sort -hr
查看TCP状态和数量
代替 netstat ifconfig 的强大工具 基于iproute命令集配置Linux网络
用途 | net-tool | iproute2 |
---|---|---|
地址和链路配置 | ifconfig | ip addr/link |
路由表 | route | ip route |
ARP表 | arp | ip neigh |
VLAN | vconfig | ip link |
隧道 | iptunnel | ip tunnel |
组播 | ipmaddr | ip maddr |
统计 | netstat | ss |
net-tools 和 iproute 对应关系
作用 | net-tools用法 | iproute2用法 |
---|---|---|
展示本机所有网络接口 | ifconfig | ip link |
开启/停止某个网络接口 | ifconfig ech0 up/down | ip link set eth0 up/down |
给网络接口设置/删除IP | ipconfig eth0 10.0.0.0.1/24 / ifconfig eth0 0 | ip addr add/del 10.0.0.1/24 dev eth0 |
显示某个网络接口的IP | ifconfig eth0 | ip addr show dev eth0 |
显示路由表 | route -n | ip route show |
添加删除默认网关 | route add/del default gw 192.168.1.2 eth0 | ip route add/del via 192.168.1.2 eth0 ip route replace default via 192.168.1.2 dev eth0 |
添加ARP | arp -s 192.168.1.100 00:0c:29:c5:5a:ed | ip neigh add 192.168.1.100 lladdr 00:0c:29:c5:5a:ed dev eth0 |
删除ARP | arp -d 192.168.1.100 | ip neigh del 192.168.1.100 dev eth0 |
展示套接字状态 | netstat -l | ss -l |
-
默认网关: 如果主机找不到转发规则, 就把数据包发给默认的网关(家用网络一般是路由器的ip)
-
增加/删除一条路由规则
ip route add/del 192.168.2.0/24 via 192.168.1.254
- 当使用 VPN 时,建立新的虚拟网卡 tun, 可以手动设置路由让指定ip走虚拟网卡 从而访问到VPN内局域网地址(网络号和真实网卡一样,默认会把数据包转发至本地局域网)
-
设置网卡 eno1 MAC 地址
ip link set eno1 address b4:xx:xx
-
关闭 启用
ifconfig name down/up
-
修改IP
ifconfig eth0 192.168.1.200/24
iproute-ss
- 查看网络连接统计
ss -s
- 查看打开的端口
ss -l
- 查看打开的端口以及进程pid
ss -pl
- 查看所有socket连接
ss -a
- 隧道术: 网络协议的数据包被封装在另一种网络协议的数据包之中
这是VPN的技术理论基础
- 按指定端口过滤
ss -at '( dport = :3308 )'
按主机扫描端口
-
主机扫描
- nmap -sS 192.168.1.1 //TCP、SYN扫描,使用最多,最快
无参数扫描默认添加-sS参数
- nmap -Pn 192.168.1.1 //当目标主机禁ping时使用,假设主机存活扫描端口(耗时长)
- nmap -p- 192.168.1.1 //扫描目标主机全部端口
- nmap -sP 192.168.1.1 //只对目标进行ping检测,快速
- nmap 192.168.1.1/24 //对网段进行扫描
- nmap -sS 192.168.1.1 //TCP、SYN扫描,使用最多,最快
-
进阶用法
- nmap -V 192.168.1.1 //显示扫描细节
- nmap -A 192.168.1.1 //综合扫描
- nmap -sT 192.168.1.1 //进行tcp扫描
- nmap -sU 192.168.1.1 //进行udp扫描
- nmap -sV 192.168.1.1 //对目标上的服务程序版本进行扫描
- nmap -T4 192.168.1.1 //设置扫描速度1~5
- nmap -sn 192.168.1.1 //相比sP检验存活使用更多方式
- nmap -O 192.168.1.1 //对目标主机的操作系统进行扫描(-A获得更多信息)
- nmap --data-length:55 192.168.1.1 //添加垃圾数据避免nmap被识别
- nmap -D IP1,IP2... IP //发送参杂着假ip的数据包检测
-
使用环境
- 扫描网段存活IP:nmap -sP 192.168.1.1/24
- 扫描所有端口开放情况:nmap -sS -p 1-65535 192.168.1.1
- 当目标主机禁ping时:nmap -Pn 192.168.1.1
- 当目标可能存在waf拦截时:nmap -sS --data-length:55 192.168.1.1
- 尽可能收集目标主机信息:nmap -p 1-65535 -sV -A -V 192.168.1.1
按端口扫描
masscan
Zmap 在千兆网卡状态下,45 分钟内扫描全网络 IPv4 地址
sudo apt install netcat
-
监听端口
nc -l 11044
- 建立连接
nc 127.0.0.1 11044
任一方退出 netcat 就终止了该连接
- 建立连接
-
端口扫描
nc -z -v -n -w 2 127.0.0.1 20-33
扫描22-33端口- -z 一旦连接立马断开,不发送接收任何数据
- -v 输出详细信息
- -n 直接使用IP地址,不使用域名服务器来查询其域名
- -w 设置连接超时时间 s
- -u 使用UDP 默认缺省则是TCP
-
连接开放的端口
nc -v host port
-
传输文件
- 服务端发送文件
nc -v -l -p port < temp_out.md
- 客户端接收文件
nc -v -n host port > temp_in.md
- 注意 仅单次连接,传输完毕自动断开, 没有进度提示,大文件也不支持。也可以服务端接收文件客户端发,将
< >
互换即可
- 服务端发送文件
-
传输文件夹
- 服务端
tar -cvPf - /root/book/ | nc -l 12345
- 客户端
nc -n host port | tar -xvPf -
- 这是未压缩的, 压缩再加上参数即可 例如
gzip -czvPf -xzvPf
- 服务端
scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,认证用的是ssh 所以也能使用sshpass
-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-i: 指定私钥文件
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
- 远程到本地
scp [email protected]:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
- 本地到远程
scp /opt/soft/nginx-0.5.38.tar.gz [email protected]:/opt/soft/scptest
注: scp rcp wget rsync 几种传输文件的方式
同步命令 (个人倾向于本地和远程, 书上称为源端和目的端) 命令参数详解 | 本地和VPS0之间同步数据
-
同步到
rsync file user@host:path
上, 是将这里的file文件覆盖远程的目录下的file文件,不像git那样- 同步当前目录 将file 换成 `ls`
- -t 不加该参数:不会同步文件的修改时间,采用的
quick check策略
。使用后:让修改时间也同步,如果修改时间一致,就不同步(它不考虑文件内容,这是个坑)。 - -I 就能解决上面的问题,每个文件都进行同步,代价是速度慢
- -v 输出更多信息 v可以多个,v越多输出的日志信息也越多
- -r 文件夹递归同步,这种是采用
上面的I策略
的 - -l 同步软链接文件,默认是忽略该类文件的
- -L 同步软链接文件及其目标文件
- -z 压缩数据,提高传输速度
- -p 缺省该参数时,如果远程没有该文件,权限会和本地的文件一致, 如果远程已经有该文件,权限和本地的不同, 那么命令不作更改。使用参数后,就会让权限尽力保持一致
- -a 这个命令等价于 -rlptgoD 归档选项,采用递归方式,尽可能保持各方面的一致,但是不能同步硬链接,得加上
-H
-
只要文件不一样,就会触发同步,该命令确保远程的是和本地的一致,本地的直接覆盖远程的
-
只要rsync命令对本地有读权限,对远程有写权限,就能确保目录是一致的
-
rsync只能以登录远程的账号来创建文件,它不可能将文件的组信息,用户信息也一致,除非是root用户可以做到
【其他特别参数】
-
--delete
如果本地没有该文件 远程就会删掉--delete-exclude
删除远程指定的文件--delete-after
默认是先清理远程文件再同步,使用该选项就相反了先同步再删除需要删除文件- 例如
mkdir blackdir && rsync -a --delete blackdir/ test/
删除目录内大量小文件时相较rm速度更快
-
--exclude
排除掉某些文件不同步 可以使用多次--excule-from
如果要排除的文件很多,可以将文件名放在一个文本文件里,然后使用该选项读取该文件
-
--partial
断点续传 可以简写-P -
--progress
显示传输进度信息
- 不输出,重定向到黑洞设备
curl -s -o /dev/null URL
- 使用基础认证 发送JSON数据
curl -i -H "Content-Type:application/json" -u admin:secret -X POST --data '{"title":"1","content":"1"}' http://tomcat.kcp/email/content
- 如果没有认证则会收到 401 返回码
- 使用Cookie
curl -v --cookie "USER_TOKEN=Yes" http://127.0.0.1:5000/
- 使用代理
-x, --proxy [protocol://]host[:port]
- 设置 Header
-H "xxx:xxx"
例如-H "Content-Type:application/json" -H "token:xxx"
- 设置POST请求 body
-d '{"title":"1","content":"1"}'
- 本地文件
-d '@data.json'
- 本地文件
- 上传文件
curl -X POST -H "Content-Type: multipart/form-data" -F "[email protected]" URL
特性和优势:支持 HTTP HTTPS FTP协议
- 能够跟踪 HTML 和 XHTML 即可以下载整站,但是注意wget会不停的去下载HTML中的外链,无休无止
- 遵守 robots.txt 标准的工具
- 支持慢速网路和不稳定的下载,当下载失败就会不断重试,直到下载成功
- 支持断点续传
-
wget 配置文件
/etc/wgetrc
~/.wgetrc
两个文件配置(区别是全局和当前用户)wget的默认行为 -
例如 -X配置:
wget -X js,css URL
排除两个文件夹不下载- 如果要默认排除,到
.wgetrc
文件里配置exclude_directories=js,css
- 这时候就出了一个问题,你不知道配置文件的情况时,发现总有目录下载不下来,就可以排除两个文件的作用:
wget -X '' -X js,css URL
- 注意:
-X
,两个配置文件。这三者的配置,wget是取并集的, 使用了-X ''
后就只看后面的-X 参数
- 如果要默认排除,到
-
参数:
-
目录下载
-r
递归选项 -
后台下载
--background
即使 你Ctrl D/exit也不会中断执行 -
-o
指定日志输出。默认当前目录的 wget-log -
--content-disposition
支持HTTP Content-Disposition标头,通常包含文件名信息 -
-O
将下载的所有文件的内容追加到指定的文件 -
-c
断点续传 但是有潜在问题, 例如当源站的文件头部分或者已下载部分修改了,但wget只从上次下载的进度开始继续下载 -
避开robots.txt 协议
--execute robots=off
- 尝试使用 Tomcat 构建一个有robots协议的网站,然后wget还是绕过了协议
- 对 Github 测试这个参数是正常的
-
简化wget获取到的文件
- -nH 去除wget将域名作为文件夹的情况,只得到域名下相对路径的文件
- --cut-dirs=number 去除前缀路径
- 只用
-r
: URL:a/b/c/ -r
再用上--cut-dirs=1
: URL:/b/c/-r
再用上-nH
:a/b/c/-r
再用上-nH --cut-dirs=1
: /b/c/-r
再用上-nH --cut-dirs=2
: /c/
-
平铺,不使用源站的目录结构:
-nd
若有重名文件,自动重命名 -
强制多层次文件夹
-x
例如:github.com/a/b/ --> github/com/a/b/ -
协议命名的根文件夹
--protocol-directories
例如 ftp://baidu.com/a/b/ -
自动重试
--tries=number
设置下载失败后重试的次数 -
拒绝重复下载同名文件,即使这个文件不是最新的
-nc
, wget会先比较时间戳,然后下载,且多次下载同名文件会自动添加 .1 .2 这样的后缀 -
自动分析是否下载同名文件,
-N
会考虑时间戳以及文件大小,但是不能和 -nc 同时设置 -
限速
--limit-rate=N
默认单位是b,可以指定单位 k m- 这个限速的实现原理是通过在进行一次网络读取后,就线程睡眠一会儿,将速度降下来,如果下载是超小文件就可能无法达到限速的效果
-
限制频率 -w 即
--wait=seconds
可以指定 m h d 等单位,效果是每两个请求间隔指定时间 -
请求重试
--waitretry
设置请求重试的秒数, 如果设置的是10秒, 第一次失败后就会等1s,然后第二次失败就等2s...直到递增到10s,然后结束- 其效果 其实应该是 设置值的累加 (理解为重试次数似乎更好)
-
-
镜像整站
wget --mirror -p --convert-links -P . URL
- –miror: 镜像下载
- -p: 下载所有为了html页面显示正常的文件
- –convert-links: 下载后,转换成本地的链接
-P .
: 保存所有文件和目录 到当前目录
-
镜像SPA等使用了前端动态路由的网站
wget --mirror -w 2 -p --html-extension --tries=3 -k -P stackperl.html "https://docs.egret.com/uieditor/docs/api/eui/eui.AddItems"
- 但是下载后无法正常使用子页面,还需要web服务器处理应用动态路由到静态资源文件上去 有点麻烦
- 参考: how-do-i-completely-mirror-a-web-page
-
获取API返回数据
wget -q url -O -
############ 证书颁发机构
# CA机构私钥
openssl genrsa -out ca.key 2048
# CA证书
openssl req -x509 -new -key ca.key -out ca.crt
############ 服务端
# 生成服务端私钥
openssl genrsa -out server.key 2048
# 生成服务端证书请求文件
openssl req -new -key server.key -out server.csr
# 使用CA证书生成服务端证书 关于sha256,默认使用的是sha1,在新版本的chrome中会被认为是不安全的,因为使用了过时的加密算法。
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
# 打包服务端的资料为pkcs12格式(非必要,只是换一种格式存储上一步生成的证书) 生成过程中,需要创建访问密码,请记录下来。
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pkcs12
Manjaro 导入自定义证书
sudo trust anchor --store my-root.crt sudo update-ca-trust
postfix和devecot
ftpserver
Golang
sudo apt-get install vsftpd -y
sudo systemctl start vsftpd.service
- 创建用户
sudo useradd -d /home/uftp -s /bin/bash uftp
- 设置密码
sudo passwd uftp
- 删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败:
sudo rm /etc/pam.d/vsftpd
- 限制用户 uftp 只能通过 FTP 访问服务器,而不能直接登录服务器
sudo usermod -s /sbin/nologin
uftp - 修改配置文件
sudo chmod a+w /etc/vsftpd.conf
/etc/vsftpd.conf
# 限制用户对主目录以外目录访问
chroot_local_user=YES
# 指定一个 userlist 存放允许访问 ftp 的用户列表
userlist_deny=NO
userlist_enable=YES
# 记录允许访问 ftp 用户列表
userlist_file=/etc/vsftpd.user_list
# 不配置可能导致莫名的530问题
seccomp_sandbox=NO
# 允许文件上传
write_enable=YES
# 使用utf8编码
utf8_filesystem=YES
- 新建文件 sudo touch /etc/vsftpd.user_list
- 修改权限
sudo chmod a+w /etc/vsftpd.user_list
- 添加用户名
uftp
- 设置用户目录只读
sudo chmod a-w /home/common
- 新建公共目录 设置权限
mkdir /home/common/public && sudo chmod 777 -R /home/common/public
- 重启服务
sudo systemctl restart vsftpd.service
$ sudo mkdir /home/common
$ sudo touch /home/common/welcome.txt
$ sudo useradd -d /home/common -s /bin/bash common
$ sudo passwd common
$ sudo rm /etc/pam.d/vsftpd
$ sudo usermod -s /sbin/nologin common
$ sudo chmod a+w /etc/vsftpd.conf
$ sudo vim /etc/vsftpd.conf
$ sudo vim /etc/vsftpd.user_list
$ sudo chmod a-w /home/common
$ sudo mkdir /home/common/public && sudo chmod 777 -R /home/common/public
$ sudo systemctl restart vsftpd.service
- 测试端口连通性
telnet ip port
如果端口开放则提示 Connected, 否则会提示 refused- netcat 具有同样效果
nc -v -z -n ip port
- netcat 具有同样效果
TUN TAP 区别
TUN
- 工作在IP层 第三层
TAP
- 工作在数据链路层,第二层
服务端
- 安装服务端
sudo pip install shadowsocks
- 启动服务
sudo ssserver -p 443 -k sd -m aes-256-cfb
- 后台运行
sudo ssserver -p 443 -k sd -m aes-256-cfb --user nobodu -d start
- 停止
sudo ssserver -d stop
- 日志
sudo less /var/log/shadowsocks.log
客户端
sudo vim /etc/ss.json
{
"server":"127.0.0.1",
"server_port":443,
"localport":1080,
"password":"password",
"timeout":600,
"method":"aes-256-cfb"
}
sslocal -c /etc/ss/json
- 设置代理是1080端口即可
以下文件都在同一目录下
- 服务端提供 ca 文件
- 配置文件
connect.ovpn
client dev tun proto tcp remote IP PORT # 服务端IP地址映射的公网IP地址 端口 resolv-retry infinite nobind persist-key persist-tun ca ca.crt # ca 文件 auth-user-pass # 可选 password 文件 comp-lzo verb 3
- 账户密码文件
passwd
用户名 密码
- 启动 sudo openvpn --daemon --cd /etc/openvpn/client --config connect.ovpn --auth-user-pass /etc/openvpn/client/passwd --log-append /path/to/log.log
ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such device
- modinfo tun 查看内核模块是否存在
- 尝试 sudo pacman -S networkmanager-vpnc 并重启
openfortivpn 对应于 fortinet.com 的开源版本
yay openfortivpn
- 按官方文档新建配置文件 some_company.conf
- 填写正确的 host,port,username,password
- 注意: trusted-cert 可以用仓库Readme文档的值,通过报错信息获得公司内的证书,然后反向填入配置文件。。。
- 相比于官方的包
forticlient-vpn
GUI配置完,不像Windows平台会提示导入证书,只有无尽的连接中。。
- 相比于官方的包
- sudo openfortivpn -c some_company.conf
- 手动追加dns
sudo sed -i '1 i\nameserver x.x.x.x' /etc/resolv.conf
注意 dns的ip会从运行中的输出 ns 部分
- 安装
- 编译安装
- 包管理器
sudo pacman -S community/proxychains-ng # Arch sudo apt install proxychains # apt
- 配置文件
/etc/proxychains.conf
[ProxyList] # add proxy here ... # meanwile # defaults set to "tor" # socks4 127.0.0.1 9050 # socks5 127.0.0.1 1080 http 127.0.0.1 7890
其主要配置文件为:
/etc/sysconfig/iptables
-
查看配置情况
iptables -L -n
-
开启/屏蔽 端口
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
- -A 参数表示添加规则,此外-D表示删除规则
- -p 表示协议,一般都是tcp
- --dport 就是指定端口号
- -j 指定 ACCEPT/DROP,接收还是抛弃
问题场景
- 服务器的端口服务是正常启动的, 但是客户端连不上;使用curl 去访问那个端口, 报错说 curl: (7) Failed to connect to xxxx port 8080: 没有到主机的路由
- curl 无响应
可实现场景:公网内服务器访问内网A域名(Nginx配置)。
实现方案为公网服务器追加A域名的DNS到内网出口机的公网ip,出口机配置任意端口转发并修改上层应用层的请求头从而实现Nginx无感差异的访问(Nginx能正常匹配路由)
Virtual Network Computing
-
服务端安装
x11vnc
-
设置密码
x11vnc -storepasswd
-
使用密码启动
x11vnc -auth guess -once -loop -noxdamage -repeat -rfbauth ~/.vnc/passwd -rfbport 5900 -shared
- 设置分辨率
-geometry 1280×1024
- 设置分辨率
-
客户端 vnc-viewer(任意) 输入 ip 即可连接
noVNC
VNC client web application