关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Linux服务器中设置iptables防火墙规则?

发布时间:2023/11/6 13:04:31
香港云服务器

对于WireGuard及用途,您需要设置和配置服务器防火墙规则。需要配置NAT(网络地址转换),以允许WireGuard客户端访问互联网。在Linux中,我们使用一个术语叫做IP伪装。它的意思是一对多的NAT(1:Many)。我们还需要一个FORWARD链规则。本文介绍了如何在Linux中为WireGuard设置NAT和FORWARD防火墙规则。

步骤1:设定NAT防火墙规则

语法如下:

# iptables -t nat -I POSTROUTING 1 -s {sub/net} -o {interface} -j MASQUERADE

确保所有出站数据包通过VPN编译:

# iptables -t nat -I POSTROUTING 1 -s 10.8.1.0/24 -o eth0 -j MASQUERADE

其中

-t nat :为WireGuard设置nat表。

-I POSTROUTING 1 :在位置1插入规则,用于改变即将发出POSTROUTING链的数据包。

-s 10.8.1.0/24 :只有当源地址由WireGuard wg0接口创建时才进行NAT。

-o eth0:接口名称,通过该接口将发送数据包。在这种情况下,eth0连接到Internet。

-j MASQUERADE: 告诉(跳转)如果数据包根据给定的条件匹配,该怎么做。MASQUERADE目标只在nat表中有效,在POSTROUTING链中。该规则负责为所有WireGuard客户端路由到互联网的流量。

步骤2:接受wg0接口创建的所有流量

允许wg0接口上的所有流量: 上面的规则允许目的地为wg0的数据包。

# iptables -I INPUT 1 -i {interface} -j ACCEPT

# iptables -I INPUT 1 -i wg0 -j ACCEPT

步骤3:配置FORWARD规则

我们必须通过设置FORWARD规则允许数据包通过WireGuard服务器路由。语法为:

# iptables -I FORWARD 1 -i eth0 -o wg0 -j ACCEPT

# iptables -I FORWARD 1 -i wg0 -o eth0 -j ACCEPT

步骤4:打开WireGuard UDP端口#51194

最后,如下打开UDP端口号51194:

# iptables -I INPUT 1 -i eth0 -p udp --dport 51194 -j ACCEPT

步骤5:删除WireGuard iptables规则的命令

我们可以通过删除所有添加的iptabes规则来撤消所有命令,如下所示:

# iptables -t nat -D POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE

# iptables -D INPUT -i wg0 -j ACCEPT

# iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT

# iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT

# iptables -D INPUT -i eth0 -p udp --dport 51194 -j ACCEPT

步骤6:在Linux上启用IP转发

对于IPv4,我们将以下Linux内核变量设置为在wg0上接受传入的网络数据包,然后传递到另一个网络接口(例如eth0),然后进行相应的转发:

# sysctl -w net.ipv4.ip_forward=1

对于IPv6,请尝试以下sysctl命令:

# sysctl -w net.ipv6.conf.all.forwarding=1

步骤7:更新Wireguard配置文件以获得防火墙和路由支持

我们需要告诉WireGuard命令和脚本片段,这些命令和脚本片段将通过以下两个指令执行:

# Turn on NAT when wg0 comes up #

PostUp = /path/to/add-nat-routing.sh

# Turn of NAT when wg0 goes down #

PostDown = /path/to/remove-nat-routing.sh

放在一起:WireGuard的防火墙规则

如下更新您的/etc/wireguard/wg0.conf文件:

# vim /etc/wireguard/wg0.conf

附加在[Interface]部分:

PostUp = /etc/wireguard/helper/add-nat-routing.sh

PostDown = /etc/wireguard/helper/remove-nat-routing.sh

如下图所示:

使用mkdir命令创建一个新目录:

# mkdir -v /etc/wireguard/helper/

包含使用cat命令显示的add-nat-routing.sh :

# cat /etc/wireguard/helper/add-nat-routing.sh

和:

# cat /etc/wireguard/helper/remove-nat-routing.sh

确保也使用文本编辑器创建以下文件:

# vim /etc/sysctl.d/10-wireguard.conf

添加以下文本:

net.ipv4.ip_forward = 1

net.ipv6.conf.all.forwarding = 1

重新加载所有更改并打开NAT路由:

# sysctl -p /etc/sysctl.d/10-wireguard.conf

# chmod -v +x /etc/wireguard/helper/*.sh

# systemctl restart wg-quick@wg0.service

验证

从客户端测试您的配置。查看是否可以使用ping命令,dig命令 / host命令和Web浏览器访问Internet 。

总结

在本文中,我们向您展示了如何在Linux中为WireGuard VPN客户端启用IP转发和NAT规则,以为内部客户端提供Internet访问。