我有 Debian 9 主机,有 2 个接口:
- eth0,连接到互联网;具有 ISP 分配的动态 IP
- eth1,连接到 LAN 交换机;具有静态 IP;已与 dhcpd 建立了友好关系
我的目标是强制这台电脑像典型的家用路由器一样工作 - “共享互联网连接”,转发流量。上述调整不足以路由流量。我找到了一些方法来打开它:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
当我输入它时,root
我得到了想要的结果。此外,我不明白这里发生了什么,(例如“我可以用 替换MASQUERADE
吗POOL_PARTY
?” - 一个不自解释命令语法的很好例子!)这些字符串的主要问题是看起来像是相当低级的调整(存根以暂时实现所需的行为?)因为它不会在重启后继续存在。重启后:
lsmod | grep ip
显示模块已加载cat /proc/sys/net/ipv4/ip_forward
印刷0
sudo iptables -S
给出空的规则列表
我的意思是,在路由/防火墙 Linux 服务器上,这种任务通常是如何完成的?有没有其他方式来配置它?
答案1
这些字符串看起来就像是相当低级的调整(存根以暂时实现所需的行为?),因为它在重启后无法继续存在。[…]
通常在路由/防火墙 Linux 服务器上如何完成此类任务?有没有其他方式来配置它?
更高级别是拥有一个防火墙软件(例如shorewall
或ufw
),它将根据其配置在每次启动时设置数据包过滤规则。
如果您知道如何在启动时运行任何命令(/etc/rc.local
这是最基本的方法,不一定是最好的方法),您可以通过iptables
这种方式运行命令。这就像穷人的解决方案。
此外还请参见man 8 iptables-save
和man 8 iptables-restore
。
永久更改的一个基本方法/proc/sys/net/ipv4/ip_forward
是编辑/etc/sysctl.conf
。您甚至可以在文件中包含以下几行:
# Uncomment the next line to enable packet forwarding for IPv4 #net.ipv4.ip_forward=1
不过,如果您使用的防火墙足够智能,可以在需要时自行更改设置,当防火墙正常工作时,您可能不需要编辑该文件。我无法确定哪些防火墙会这样做(如果有的话),但一般来说这是可能的。
不自解释命令语法的一个很好的例子
为什么它应该是自我解释的?我们有man
其他资源。man 8 iptables
会指出man 8 iptables-extensions
这是相当巨大的。我敢说你发明了一种能够取代手册的自我解释语法。:)
我有一台 Debian 9 主机,有 2 个接口 [...] 可以像典型的家用路由器一样工作
我的设置完全一样。我没问题shorewall
。