![帮助理解 iptables 路由器脚本和错误](https://linux22.com/image/971632/%E5%B8%AE%E5%8A%A9%E7%90%86%E8%A7%A3%20iptables%20%E8%B7%AF%E7%94%B1%E5%99%A8%E8%84%9A%E6%9C%AC%E5%92%8C%E9%94%99%E8%AF%AF.png)
您好,我正在使用这个路由脚本,当所有网络接口启动时它会运行:
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# Don't forward from the outside to the inside.
iptables -A FORWARD -i wlan0 -o wlan0 -j REJECT
# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward
wlan0 是我的 wifi 连接到我的安卓手机 wifi 网络共享,ip 范围是 192.168.43.0/24 eth0 是我的 LAN 连接,ip 范围:10.1.1.0/24
我注意到脚本到了这一行:
iptables -A INPUT -m state --state NEW -i ! wlan0 -j ACCEPT
出现以下错误:
Bad argument `wlan0'
Try `iptables -h' or 'iptables --help' for more information.
作为 iptables 的新手,我不太清楚哪里出了问题。
有人能帮我解答这个问题吗?
答案1
为了供将来参考或供任何查看此页面的人使用,以下是完成的脚本:
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# Don't forward from the outside to the inside.
iptables -A FORWARD -i wlan0 -o wlan0 -j REJECT
#Port Forward Unifed remote
iptables -A INPUT -p tcp --dport 9512 -j ACCEPT -i wlan0
iptables -t nat -A PREROUTING -p tcp --dport 9512 -j DNAT --to-destination 10.1.1.12:9512
iptables -t nat -A POSTROUTING -d 10.1.1.12 -p tcp --dport 9512 -j SNAT --to-source 10.1.1.1
# Drop outside traffic except ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT -i wlan0
iptables -A INPUT -j DROP -p tcp -i wlan0
# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward