群晖配置允许外网通过本机访问本地LAN
通过OpenVPN、Zerotier等访问群晖本地LAN的其他设备
设置群晖的内网转发
使用
SSH连接到NAS并切换到ROOT身份启用IP转发(永久修改)
1
2
3echo net.ipv4.ip_forward = 1 | tee -a /etc/sysctl.conf
echo net.ipv6.conf.all.forwarding = 1 | tee -a /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
第三行可能会执行失败,可以重启系统或者执行以下代码临时开启IP转发:1
echo 1 > /proc/sys/net/ipv4/ip\_forward
设置NAT转发
方式一(推荐)
1
iptables -t nat -A POSTROUTING -o ! lo -j MASQUERADE
这一条用于配置网络地址转换(NAT)的命令。下面是对这条命令的详细分析:
iptables:这是 Linux 系统下的一个命令行工具,用于设置、维护和检查 Linux 内核的防火墙(Netfilter)。它允许用户配置规则,以控制数据包如何通过网络接口流动。
-t nat:这个参数指定了要操作的表为 “nat” 表。NAT 表用于进行网络地址转换,主要是在私有网络和公共网络之间转换 IP 地址。
-A POSTROUTING:这个选项表示向 “POSTROUTING” 链添加一条规则。POSTROUTING 链在数据包即将离开本机之前进行处理,适用于改变出站流量的 IP 地址。
-o ! lo:这里的
-o选项指定了规则应用于哪个输出接口。! lo意味着不适用于本地回环接口(lo)。这意味着这条规则将应用于所有非本地流量,使得流出数据包的源地址会被伪装。-j MASQUERADE:这是“跳转”目标的指令,
MASQUERADE的作用是将数据包的源地址伪装为出口接口的 IP 地址。这个选项主要用于动态分配的 IP 地址(如拨号连接),因为它会自动使用出口接口的当前 IP 地址。
实现功能:
- 这条命令的整体功能是配置一条规则,使得所有离开指定网络接口的流量(不包括本地流量)都以这个网络接口的 IP 地址为来源进行发送,能够有效地将局域网内的多台设备通过一台公网 IP 地址访问外网。
- 这样的配置常用于需要让局域网设备能够通过外网进行通信的场景,非常适合在家庭或公司环境中使用,以便实现资源共享或远程访问。
方式二
eth0为网卡名,如果是多网口的机器,请使用ifconfig查找自己机器的网卡名
1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- 命令详细解释:
iptables:这是一个用于配置Linux内核防火墙的命令行工具。它控制数据包过滤和网络地址转换(NAT)。
-t nat:这个参数指定正在操作的表类型为“nat”(网络地址转换表)。在Linux中,iptables有多个表,nat表用于处理数据包的地址转换。
-A POSTROUTING:这个部分是指将规则添加到“POSTROUTING”链。POSTROUTING链在数据包离开设备时被处理,通常用于改变出站的数据包的地址。
-o eth0:这个选项指定了出接口(outgoing interface),在这里是
eth0。这意味着规则只会应用于通过eth0接口离开的数据包。-j MASQUERADE:
-j指的是“跳转”(jump),它指定了应采取的操作。MASQUERADE意味着将出站数据包的源地址替换为该主机的IP地址,这对于动态IP地址的接口非常有用。
命令分析:
此命令的作用是设置网络地址转发规则,使得通过eth0接口离开的数据包,其源地址将被修改为该接口的IP地址。这常用于家庭或小型办公室网络中,让网络中的内部设备能通过一个公共IP地址访问互联网。总结:
该命令在NAS设备上配置NAT转发,允许位于本地网络(LAN)内的设备通过指定的外部网络接口(如eth0)访问外部网络。这是实现远程访问和内外网连接的关键步骤,尤其是在使用如OpenVPN或Zerotier的情形下。
添加用户自定义脚本,使得启动时自动设置NAT转发
控制面板 -> 服务 -> 任务计划 -> 新增 -> 触发的任务 -> 用户自定义的脚本;
常规 -> 一般设置 -> 事件 -> 开机 ;
任务设置 -> 用户自定义的脚本`;
输入以下代码并”确定”
1
2sleep 1m
iptables -t nat -A POSTROUTING -o ! lo -j MASQUERADE为保证开机启动已加载所有网络模块,延迟1分钟再添加NAT,否则会遇到模块不存在错误