我正在运行 Ubuntu Server 作为家庭网络路由器,除此之外运行良好。我在网络上还有另一台服务器,它托管我所有的内容和服务。例如,我试图在端口 42069 上托管 Emby 服务器,并将 WAN 流量从该端口转发到 10.0.0.2:8920 上的服务器。
我已经在 /etc/sysctl.conf 和 /etc/ufw/sysctl.conf 中启用了数据包转发,但是,为了安全起见,我不会将默认的 UFW 转发策略更改为接受(尽管这确实解决了我的端口转发问题...),正如该主题的一些指南所建议的那样。
我通过运行启用了端口上的传入流量sudo ufw allow 42069
,并编辑了 /etc/ufw/before.rules 以在 *filter 部分之前包含以下内容:
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -i enp1s0 -p tcp --dport 42069 -j DNAT --to-destination 10.0.0.2:8920
-A POSTROUTING -s 10.0.0.0/24 -o enp1s0 -j MASQUERADE
COMMIT
为了冗余,我还运行了以下命令,该命令应该完成与上述类似的操作:
sudo ufw route allow to 10.0.0.2 port 8920 from any port 42069 proto tcp comment emby
但是,我仍然无法远程访问 Emby 服务器。看来 UFW 正在获取请求,但阻止了端口 8920 的转发。如果我运行,cat /var/log/ufw.log | grep 8920
我会看到大量这些条目(但远程端口上没有任何内容):
Jul 28 01:18:15 rubidium kernel: [90442.255467] [UFW BLOCK] IN=enp1s0 OUT=enp3s0 MAC=00:1b:21:3a:ee:71:00:01:5c:8e:56:46:08:00 SRC= my.current.IP DST=10.0.0.2 LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=30619 DF PROTO=TCP SPT=50462 DPT=8920 WINDOW=64320 RES=0x00 SYN URGP=0
有效的是运行以下 ufw 命令:
sudo ufw route allow in on enp1s0 out on enp3s0 to 10.0.0.2 port 8920
不幸的是,这允许来自任何地方的流量(而不仅仅是指定端口)到达服务......所以我正在寻找替代方法。
有什么建议吗?
答案1
尝试将以下内容添加到 before.rules
*nat
:POSTROUTING ACCEPT [0:0]
-N masq
-A masq -d 10.10.0.0/16 -j RETURN
-A masq -j MASQUERADE
-A POSTROUTING -s 10.10.0.0/16 -j masq
COMMIT
如果你想禁用来自特定位置的流量,你必须使用单独的 ufw 规则来实现这一点,例如
ufw default deny incoming
ufw allow from 10.10.0.1