V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  24owls  ›  全部回复第 1 页 / 共 2 页
回复总数  35
1  2  
54 天前
回复了 s82kd92l 创建的主题 Linux 一个 iptables 做 SNAT 的问题
查了一下 stackexchange 上面也有答案 https://unix.stackexchange.com/a/429551
54 天前
回复了 s82kd92l 创建的主题 Linux 一个 iptables 做 SNAT 的问题
刚刚读了一遍 nft(8), 你这个看起来可以用 nft notrack 解决

nft 规则: 127.0.1.1:1234 -> 127.0.1.2:4321

# nft -f- <<EOF
table inet raw {
chain prerouting {
type filter hook prerouting priority raw; policy accept;
ip daddr 127.0.1.1 tcp dport 1234 notrack ip daddr set 127.0.1.2 tcp dport set 4321 log prefix "RAW "
ip saddr 127.0.1.2 tcp sport 4321 notrack ip saddr set 127.0.1.1 tcp sport set 1234 log prefix "RAW "
}
}
EOF

测试结果

# echo 4321 out | nc -l 127.0.1.2 4321 &
# echo to 1234 | nc 127.0.1.1 1234
4321 out
to 1234
[1] + Done echo 4321 out | nc -l 127.0.1.2 4321

log 记录

# journalctl --priority=warning..warning --no-hostname | grep RAW
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.1.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=1234 DPT=41882 WINDOW=65483 RES=0x00 ACK SYN URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.1.2 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=49359 DF PROTO=TCP SPT=41882 DPT=4321 WINDOW=512 RES=0x00 ACK URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.1.2 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=49360 DF PROTO=TCP SPT=41882 DPT=4321 WINDOW=512 RES=0x00 ACK PSH URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.1.1 DST=127.0.0.1 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=30729 DF PROTO=TCP SPT=1234 DPT=41882 WINDOW=512 RES=0x00 ACK URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.1.2 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=49361 DF PROTO=TCP SPT=41882 DPT=4321 WINDOW=512 RES=0x00 ACK FIN URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.1.1 DST=127.0.0.1 LEN=61 TOS=0x00 PREC=0x00 TTL=64 ID=30730 DF PROTO=TCP SPT=1234 DPT=41882 WINDOW=512 RES=0x00 ACK PSH URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.1.2 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=49362 DF PROTO=TCP SPT=41882 DPT=4321 WINDOW=512 RES=0x00 ACK URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.1.1 DST=127.0.0.1 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=30731 DF PROTO=TCP SPT=1234 DPT=41882 WINDOW=512 RES=0x00 ACK FIN URGP=0
Oct 14 00:22:47 kernel: RAW IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.1.2 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=49363 DF PROTO=TCP SPT=41882 DPT=4321 WINDOW=512 RES=0x00 ACK URGP=0
54 天前
回复了 s82kd92l 创建的主题 Linux 一个 iptables 做 SNAT 的问题
> 比如客户端端口是 S , 发送包到服务器端口 D1, 服务器用 D2 回复客户端, 客户端再想办法在内核把 D2 变回 D1 。这样在外网看来上下行就是两条完全独立的半连接。

这样就不能用内核的 TCP 了吧,那就用 raw socket 自己实现你这个自定义协议呗
服务器上可以强制使用 TLS SNI 来防止证书被扫描出来,没有 SNI 就无法建立 TLS 连接,全站都在 CDN 后面的话没有副作用,比如 haproxy 里面的 strict-sni 选项 http://cbonte.github.io/haproxy-dconv/2.3/configuration.html#5.1-strict-sni

邮件服务器和 HTTP 服务器在一起的话,可以检查一下是否为邮件服务器设置过 reverse DNS
67 天前
回复了 nbweb 创建的主题 问与答 问下修饰符的意思
@24owls s/得 /的 / 😂
67 天前
回复了 nbweb 创建的主题 问与答 问下修饰符的意思
perlre 里面也有详细得解释
https://perldoc.perl.org/perlre#m

Treat the string being matched against as multiple lines. That is, change "^" and "$" from matching the start of the string's first line and the end of its last line to matching the start and end of each line within the string.
开两个 sshd 啊,分别用两个不同的 sshd.conf 配置
gdb 修改 cat stdin/stdout/stderr 的例子

```
$ cat > /tmp/test-in
1
22
333
$ cat
^Z
[1]+ Stopped cat
$ jobs -l
[1]+ 6138 Stopped cat
$ gdb -q
(gdb) attach 6138
Attaching to process 6138
[ noise ]
(gdb) call (int) close (0)
$1 = 0
(gdb) call (int) open ("/tmp/test-in", 0200)
$2 = 0
(gdb) call (int) close (1)
$3 = 0
(gdb) call (int) open ("/tmp/test-out-err", 0501, 0644)
$4 = 1
(gdb) call (int) close (2)
$5 = 0
(gdb) call (int) dup (1)
$6 = 2
(gdb) detach
Detaching from program: /usr/bin/cat, process 6138
[Inferior 1 (process 6138) detached]
(gdb) quit
$ bg
[1]+ cat &
$ jobs -l
[1]+ 6138 Done cat
$ cat /tmp/test-out
1
22
333
```
nohup 做了两件事,忽略了 SIGHUP,重定向了 stdio,那退出 shell 的时候手动做这两件事就行了

SIGHUP 的话,bash 的 shopt huponexit 默认是 off 的,确保默认值就行了

stdio 的话,可以用 gdb 修改 /proc/PID/fd/{0,1,2},参考 open(2), close(2), dup(2)
2020-11-15 15:22:54 +08:00
回复了 intlinfo 创建的主题 Linux 关于 PVE 单网卡 多 IP 该如何配置?
obselete -> obsolete 😂
2020-11-15 15:18:02 +08:00
回复了 intlinfo 创建的主题 Linux 关于 PVE 单网卡 多 IP 该如何配置?
想要多个 IP 直接加到 interface 上就可以了,每个 interface 都可以支持多个 IP

$ ip address add ttt.ttt.ttt.ttt/27 dev vmbr0

IP-Alliasing 如果不是需要兼容老旧服务就没必要再继续用了,早就 obselete 了 § source: www.kernel.org/doc/html/latest/networking/alias.html

不过看你的需求应该是想要增加 interface 来分配给不同的虚拟系统用吧,linux 支持的很多 virtual interface 都可以用在这种情况下,比如 container 一般就是用 veth + netns 来提供网络的

linux virtual network interface 这里有一个写得很好的总结,可以读一读 § developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking/

你这种情况用 ipvtap 就挺合适

$ ip link add link vmbr0 name ipvtap0 type ipvtap
$ ip address add vvv.vvv.vvv.vvv/27 dev ipvtap0

你可以这样检查网络是通的

$ ping -I vvv.vvv.vvv.vvv xxx.xxx.xxx.xxx
$ nc -vlk xxx.xxx.xxx.xxx 9999 &
$ nc -v -s vvv.vvv.vvv.vvv xxx.xxx.xxx.xxx 9999
2020-11-15 15:15:38 +08:00
回复了 intlinfo 创建的主题 Linux 关于 PVE 单网卡 多 IP 该如何配置?
你这种情况用 ipvtap 就挺合适

$ ip link add link vmbr0 name ipvtap0 type ipvtap
$ ip address add vvv.vvv.vvv.vvv/27 dev ipvtap0
是不是 l2tp 服务器 ip forwarding 没打开?检查检查 sysctl net.ipv4.ip_forward
2020-10-07 01:49:20 +08:00
回复了 jmc891205 创建的主题 游戏 博德之门 3 抢先体验开始了
竟然有续作了!不过看到好像跟以前很不一样了,Beamdog 换掉了,Linux 不支持了,硬盘空间容量大了几十倍,核显玩不了了,看游戏描述的时候我忽然觉得像走错了片场。。。
2020-09-15 18:33:10 +08:00
回复了 imlm 创建的主题 Linux 使用 Manjaro 自带的系统监视器遇到 BUG
你的问题描述真是让人一言难尽啊...

我给你重新描述一下问题:KDE 套件里面的 ksysguard 在 CPU 核心数超过 100 后,编号在 100 以上的 CPU 的 load 显示出问题,应该显示成类似 `CPU 101 (10.10101^)` 这样,实际显示成类似 `cpu/cpu101/TotalLoad(错误)` 这样

大概是 ksysguard 的界面有 bug 吧,建议去 StackExcange 提问或许能有人解答,或者给 KDE 提 bug 吧
2020-08-11 19:19:22 +08:00
回复了 kZime 创建的主题 问与答 计科还是统计学专业?
第一年的课程应该都是基础课,以后会有非参数统计这种好玩的课程,哈哈哈

不过如果不喜欢分析,测度论学不进去,不打算认真投入大量精力学习的话,去学计算机吧
2020-08-11 19:14:26 +08:00
回复了 kZime 创建的主题 问与答 计科还是统计学专业?
数学院的统计而不是经管的统计的话,如果以后打算继续读跟数据处理有关的计算机的学位,导师可能会比较喜欢要你
2020-06-07 11:31:22 +08:00
回复了 sflovedtq 创建的主题 问与答 初三编程小白请教各位前辈,初学学什么语言好?
编程语言之外,最好把英语学好。说得夸张一点,计算机的资料,你用英文去找,就像是在海边捡贝壳;你用中文去找,时不时会感觉好像陷进了沼泽。

如果英语成绩的提高,让你有机会接触更好的教育,那就一举两得了。

如果是刚上高中的我自己的话,我会给出这些建议:

- 跟着英文 SICP 做一遍习题,顺便学一点 Scheme 和 Racket § mitpress.mit.edu/sicp

- 想做一点小玩具的时候,多学一些 Racket § docs.racket-lang.org

- 跟着英文 PLLC 做一遍习题,学一点编程语言知识 § www.cs.utah.edu/~mflatt/past-courses/cs7520/public_html/s06/notes.pdf

- 操作系统和 C 语言不去接触

- 掌握基本的数学分析和代数之前,算法和数据结构不去接触

- 网络相关的原理性知识,中英文什么能看懂看什么,不受限制地上网作为一个大习题

这些都做完,高中应该过去很多个学期了,你自己也应该有方向了
2020-04-17 17:24:27 +08:00
回复了 AndroidManger 创建的主题 问与答 如何监控视频的时长
想要 vlc 播放到一定的时间点后自动暂停可以写一个简单的 lua extension 来实现,用 `player.get_position()', `playlist.pause()', `misc.mwait()' 这几个 api 就可以
2020-04-17 17:23:17 +08:00
回复了 AndroidManger 创建的主题 问与答 如何监控视频的时长
要是硬性限制那你在 streaming 的服务器上设置,跟 vlc 播放器没关系
1  2  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1468 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 17:25 · PVG 01:25 · LAX 09:25 · JFK 12:25
♥ Do have faith in what you're doing.