首页
留言板
统计
友链
关于
推荐
图片压缩
在线PO转MO
柠娜汉化站
图标格式生成
Android图标转换
搜索
1
PCL我的世界启动器设置第三方登录
62 阅读
2
Openclaw实战部署
16 阅读
3
Debian搭建wireguard组网
15 阅读
4
DBeaver连接国产神通数据库
12 阅读
5
哪吒监控配置nginx反向代理
9 阅读
服务器
技术
闲谈
MC
VPN
登录
搜索
标签搜索
debian
服务器
Linux
监控
雨云
wireguard
Android
MC
我的世界
硬盘
nginx
反向代理
哪吒
部署
Rust
静态编译
组网
局域网
联机
虚拟网卡
mohuangNPC
累计撰写
22
篇文章
累计收到
4
条评论
首页
栏目
服务器
技术
闲谈
MC
VPN
页面
留言板
统计
友链
关于
推荐
图片压缩
在线PO转MO
柠娜汉化站
图标格式生成
Android图标转换
搜索到
22
篇与
的结果
2026-07-22
tun2socks开发记录
1.Dial绑定网卡后卡住的问题func setSocketOptions(network, address string, c syscall.RawConn, opts *Options) (err error) { if opts == nil || !isTCPSocket(network) && !isUDPSocket(network) { return } var innerErr error err = c.Control(func(fd uintptr) { host, _, _ := net.SplitHostPort(address) if ip := net.ParseIP(host); ip != nil && !ip.IsGlobalUnicast() { return } if opts.InterfaceName == "" && opts.InterfaceIndex != 0 { if iface, err := net.InterfaceByIndex(opts.InterfaceIndex); err == nil { opts.InterfaceName = iface.Name log.Info().Msgf("成功设置: %v", opts.InterfaceIndex) } } if opts.InterfaceName != "" { if innerErr = unix.BindToDevice(int(fd), opts.InterfaceName); innerErr != nil { return } log.Info().Msgf("成功设置: %v", opts.InterfaceName) } if opts.RoutingMark != 0 { if innerErr = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_MARK, opts.RoutingMark); innerErr != nil { return } } }) if innerErr != nil { err = innerErr } return }如上代码,linux中,t2s开发时,会遇到本地回环问题,而上面的代码是主要是为了解决本地回环,将连接直接绑死在某个网卡,强制某个网卡发送,而不会被全局路由到,但是可能出现conn, err := dialer.Dial("tcp", address+":"+port)一直卡在这段代码的情况,原因之一是因为rp_filter 丢包,服务器执行命令:sysctl -w net.ipv4.conf.all.rp_filter=0 sysctl -w net.ipv4.conf.ens33.rp_filter=0 //ens33应该是每台服务器可能不一样即可解决原因需要关闭 Linux 的 反向路径过滤(Reverse Path Filtering,RPF / rp_filter)。2.DNS下FakeIP问题当我们设置路由,让所有流量走自定义网卡时,此时dns也会走,并且为了放置dns污染,有时候我们会使用fakeip功能,此时切记fakeip的网段也需要加入到路由表,比如我的fakeip网段为172.25.0.0,则需要代码或者命令将网段加入到tun1,ip route add 172.25.0.0/16 dev tun1否则当你返回fakeip给t2s的时候,他会直接请求172网段,如果没有路由到tun1你是捕获不到的,他会默认发往default网卡
2026年07月22日
1 阅读
0 评论
0 点赞
2026-05-08
通过 WireGuard VPN 访问不在同局域网的局域网内机器实战记录
前言最近遇到一个典型的网络访问场景:需要通过 WireGuard VPN 访问位于远程服务器局域网内的机器,而自己不在该局域网中。虽然 VPN 能成功建立,但在访问局域网内的目标机器时,总会遇到路由和 NAT 问题,导致 ping 或服务访问不通。为了理清网络流向和解决问题,我记录了整个排查和配置过程,供大家参考。本文以 Debian 系统 + WireGuard VPN + 局域网访问 为例,结合具体 IP 拓扑,展示问题分析与解决方案。问题描述网络拓扑:本机 A:WireGuard 客户端,wg0 IP 为 172.32.100.2服务器 B:WireGuard VPN Server,wg0 IP 为 172.32.100.1服务器 C:WireGuard 客户端,wg0 IP 为 172.32.100.3,物理网卡 eth0 为 172.16.100.2目标机器:局域网内 IP 172.16.100.3,直接连接在服务器 C 所在的物理网段需求:本机 A 可以成功连接 WireGuard VPN,并且要能够访问 172.16.100.3 。目标机器与服务器 C 在同一局域网,但本机 A 并不在这个局域网中。网络拓扑图实战步骤本机wg配置首先需要在本机的wg配置中的allowips中添加一个路由172.16.100.3/32 这代表当本机访问172.16.100.3的时候会通过wg网卡发送至B服务器B配置作为组网的服务端,也需要在对应的peer中增加allowips 172.16.100.3[Peer] PublicKey = eWlvr AllowedIPs = 172.32.100.3/32,172.16.100.3/32这代表B收到172.16.100.3的请求知道发往172.32.100.3服务器 C配置此时服务器C中使用 tcpdump -i any -n icmp抓包,然后本机A ping一下172.16.100.3 应该是可以抓到流量包了,但是还无法转发 服务器C首先一定要开启ip转发echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf sysctl -p然后,如果我们操作抓包,则应该会注意到:16:33:00.570423 IP 172.32.100.2 > 172.19.100.3: ICMP echo request, id 1, seq 62, length 40看上去没什么问题,但是源ip是172.32.100.2,如果不做snat,极有可能是无法发到172.19.100.3的,所以我们还要做snat,执行命令iptables -t nat -A POSTROUTING -s 172.32.100.0/24 -o eth0 -j MASQUERADE这样当从eth0出口的流量就会转为eth0网卡的ip,这样就可以成功发送给同在局域网的172.19.100.3了 此时Aping172.19.100.3即可通过菜鸟标注因为我不太懂snat以及网卡出入这个抽象概念,,第一次看到snat,就好奇如果设置了这个东西,那我本机ping 172.32.100.2的时候,虽然走了wg网卡(出口网卡),但是最终不是还会通过eth0发到公网,是否会被snat,但是答案显然易见是不会,我没找到让我能非常理解的概念,不过大体可以理解为只有一个出口网卡,你设置了路由,把172.32.100.0/24的流量路由到wg网卡,那wg就是出口网卡,然后无论最终他又通过什么方式由eth0发出去,那出口就是wg网卡不是eth0,所以snat命令也只对出口网卡是eth0的生效,如果有更好的解释方式请务必留言
2026年05月08日
4 阅读
0 评论
0 点赞
2026-04-24
WireGuard跨网段流量转发实战:Linux → Windows双VPN代理 + SNAT完整配置
前言最近遇到一个wg节点之间相互访问的问题,记录一下操作过程问题涉及机器机器A(linux) 172.40.100.3本机B(windows) 172.32.100.2(vpn1),172.40.100.2(vpn2)描述机器A有一个需求,那就是访问172.32.100.6的流量时需要把流量转发给本机B,由本机B去代为请求,并正确响应,其中172.32.100.0/24(vpn1)与172.40.100.0/24(vpn2)分别隶属不同的wg peer端解决步骤机器A增加路由首先机器A的AllowedIPs中需要增加一个172.32.100.6/32的路由,具体作用为当机器A访问172.32.100.6的相关流量时会走当前(vpn2)的网卡vpn2服务端增加路由转发接下来去172.40.100.0/24组网的wg服务端中,在wg的conf中的对应peer(172.40.100.2)中的AllowedIPs也增加172.32.100.6/32,目的为了当流量到服务端时,转发给本机A节点验证机器A -> 本机B此时本机B使用wireshark抓包vpn2网卡,在机器A中ping 172.32.100.6, 会发现已经可以抓到流量了本机B配置IP转发因为本机B是windows所以默认没有开启ip转发,执行命令Set-NetIPInterface -InterfaceAlias "vpn1" -Forwarding Enabled Set-NetIPInterface -InterfaceAlias "vpn2" -Forwarding Enabled该命令的作用为将vpn1和vpn2开启ip转发,可以让vpn2的目标ip为172.32.100.6的流量转发给vpn1,但注意该命令非持久化,重启电脑或者网卡重新开启关闭就会失效,最好写到wg脚本中//查看各个网卡转发是否开启 Get-NetIPInterface | Select-Object ifIndex,InterfaceAlias,AddressFamily,Forwarding验证vpn2 -> vpn1此时本机B使用wireshark抓包vpn1网卡,在机器A中ping 172.32.100.6, 会发现已经可以抓到流量了,172.40.100.x -> 172.32.100.6进行SNAT此时虽然vpn1可以收到,但是因为源ip为172.40.100.x, 所以回包可能会出现问题,此时需要做一个snat,执行命令New-NetNat -Name "wg-nat" -InternalIPInterfaceAddressPrefix 172.40.100.0/24该命令的作用是创建一个wg-nat规则,可以更改源ip,粗暴理解:当某个包从A网卡到B网卡的时候,B网卡会收到的源IP会改为B网卡的IPAI解释:当一个包从A网卡进入 → 被系统转发 → 从B网卡发出时 → 发出时源IP会被改成B网卡的IP(如果命中NAT规则)包进入(zgbzw2), 不改系统决定转发 , 查路由从 vpn 发出去 , 此时 NAT 生效 , 改源IP//获取nat规则 Get-NetNat //删除nat规则 Remove-NetNat -Name "wg-nat"验证此时在机器A中ping 172.32.100.6即可成功
2026年04月24日
7 阅读
0 评论
0 点赞
2026-03-31
pgsql角色授权
-- 完整授权脚本\c your_database_name;-- 1. 授予数据库连接权限GRANT CONNECT ON DATABASE your_database_name TO your_role_name;-- 2. 授予模式权限GRANT ALL ON SCHEMA public TO your_role_name;GRANT USAGE ON SCHEMA public TO your_role_name;GRANT CREATE ON SCHEMA public TO your_role_name;-- 3. 授予现有表的所有权限GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON ALL TABLES IN SCHEMA public TO your_role_name;-- 4. 授予未来表的所有权限ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO your_role_name;-- 5. 授予现有序列的所有权限GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO your_role_name;-- 6. 授予未来序列的所有权限ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO your_role_name;-- 7. 授予现有函数的所有权限GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO your_role_name;-- 8. 授予未来函数的所有权限ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT EXECUTE ON FUNCTIONS TO your_role_name;-- 9. 授予创建对象的权限(重要!)GRANT CREATE ON DATABASE your_database_name TO your_role_name;
2026年03月31日
6 阅读
0 评论
0 点赞
2026-03-11
DBeaver连接国产神通数据库
前言DBeaver是免费和开源 (GPL)为开发人员和数据库管理员通用数据库工具。神通数据库管理系统是传承航天自主创新传统,按照航天工程化和质量控制体系研制的一款自主创新、安全高效的国产数据库软件,具有通用性、高性能、高安全、高可靠、高可用等特性,提供多种版本充分满足不同业务场景需求,具备共享存储高可用、读写分离等多种部署模式,提供多种性能优化 技术,可满足用户在海量数据、高并发应用场景下对系统高性能的需求,为用户打造功能完善、稳定高效的业务数据存储管理支撑平台。最新版本DBeaver中ODBC连接方式已经弃用【Legacy ODBC driver is deprecated】,提供通用JDBCX方式进行连接神通数据库。配置流程如下:1.选择JDBCX连接方式2.编辑驱动设置,配置神通数据库连接方式3.设置神通数据库类名和URL模板类名:com.oscar.DriverURL模版:jdbc:oscar://{host}:{port}4.添加神通数据库JDBC驱动库文件基本都在神通数据库安装目录的lib下然后删除多余的别的依赖或者文件5.点击确定后保存6.输入神通数据库连接信息【IP、端口、数据库实例名称、用户名及密码】7.点击测试连接,测试是否正常连接8.完成设置点击完成,即可完成设置
2026年03月11日
12 阅读
0 评论
0 点赞
1
2
...
5