Linux服务器中设置iptables防火墙规则?
对于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
附加在部分:
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访问。
页:
[1]