小编use*_*554的帖子

iptables/nat/prerouting 忽略 UDP 数据包吗?

在许多具有不同内核版本的服务器上具有相同的效果。

Iptables DNAT 规则有多种:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 12345 -j DNAT --to-destination 10.20.30.40:5678
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23456 -j DNAT --to-destination 10.11.12.13:5789
....
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 34567 -j LOG --log-prefix 'natudp: '
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 34567 -j DNAT --to-destination 10.55.66.77:34567
Run Code Online (Sandbox Code Playgroud)

问题:UDP 规则不适用于来自 eth0 的传入请求。
它们的数据包和字节计数器的值为零。
简化(删除 dport)没有效果。
结果,请求被传递到过滤器/输入链而不是转发。

来自虚拟接口(tap、veth)的数据包不存在这样的问题 - 它们被预路由规则捕获。
TCP 则没有这样的问题。
UDP …

nat iptables linux-networking dnat

6
推荐指数
1
解决办法
1182
查看次数

如何教 systemd 检测服务进程是否已在运行?

有一个守护进程可以从命令行和 systemctl 启动。

/etc/systemd/system/mydaemon.service 包含 ExecStart= 和 PIDFile= 所以 Systemd 可以肯定地检测到该服务是否正在运行:

[Unit]
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon --no-fork
PIDFile=/var/run/mydaemon-%i.pid

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

为什么“systemctl status mydaemon”说守护程序即使正在运行也已停止?

如何教 systemd 守护进程不仅可以通过“systemctl start”运行,还可以直接运行?

systemd

0
推荐指数
1
解决办法
3589
查看次数

标签 统计

dnat ×1

iptables ×1

linux-networking ×1

nat ×1

systemd ×1