24owls

24owls

V2EX 第 15190 号会员,加入于 2011-12-24 01:38:08 +08:00
24owls 最近回复了
12 天前
回复了 s82kd92l 创建的主题 Linux 一个 iptables 做 SNAT 的问题
查了一下 stackexchange 上面也有答案 https://unix.stackexchange.com/a/429551
12 天前
回复了 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
12 天前
回复了 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
25 天前
回复了 nbweb 创建的主题 问与答 问下修饰符的意思
@24owls s/得 /的 / 😂
25 天前
回复了 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)
344 天前
回复了 intlinfo 创建的主题 Linux 关于 PVE 单网卡 多 IP 该如何配置?
obselete -> obsolete 😂
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1321 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 17:59 · PVG 01:59 · LAX 10:59 · JFK 13:59
♥ Do have faith in what you're doing.