我有一段时间有一个脚本可以通过我的 Wireguard VPN 转发端口。最近,我尝试使用它,它返回:
Bad argument `wg0'
Try `iptables -h' or 'iptables --help' for more information.
这是我的脚本:
#!/usr/bin/env bash
# Usage: ./wireguard_port_forward.sh <client IP> <server IP> <port> <interface>
# Example: ./wireguard_port_forward.sh 10.0.0.2 10.0.0.1 8080 ens3
# Script must be run as root
CLIENT=$1
SERVER=$2
PORT=$3
INTERFACE=$4
iptables -A FORWARD -i $INTERFACE -o wg0 -p tcp --syn --dport $PORT -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i $INTERFACE -o wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i wg0 -o $INTERFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i $INTERFACE -p tcp --dport "$PORT" -j DNAT --to-destination "$CLIENT"
iptables -t nat -A POSTROUTING -o wg0 -p tcp --dport "$PORT" -d "$CLIENT" -j SNAT --to-source "$SERVER"
netfilter-persistent save
论证被删除了吗-o
?我对 iptables 不太熟悉,并且不想因为过多的摆弄而弄乱我的防火墙规则。
您没有为脚本提供足够的参数。因此,
$INTERFACE
为空并且您会收到Bad argument
错误。像这样的脚本,特别是当以 root 身份运行时,应该验证输入并在命令中使用它们之前给出错误iptables
。例如