![IPtables 仅允许从一个 IP 和一个端口到一个端口的流量](https://linux22.com/image/1162638/IPtables%20%E4%BB%85%E5%85%81%E8%AE%B8%E4%BB%8E%E4%B8%80%E4%B8%AA%20IP%20%E5%92%8C%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%E5%88%B0%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%E7%9A%84%E6%B5%81%E9%87%8F.png)
我有此命令仅允许从一个 IP 向一个端口传输流量:
iptables -I INPUT ! -s $BUNGEE_IP -p tcp --dport $PORT -j DROP
但我只想允许“$BUNGEE_IP”一个端口,像这样,但是不起作用:
iptables -I INPUT ! -s $BUNGEE_IP:$PORT -p tcp --dport $PORT -j DROP
我怎样才能做到这一点?
答案1
我认为这应该可以满足您的要求,其中 192.168.0.12 代表您要允许的 IP,端口 80 代表您要允许的该 IP 的端口:
#!/bin/sh
#
# 1110080_firewall 2019.01.05 Ver:0.01
# Most basic iptables firewall.
# Currently for this question:
# https://askubuntu.com/questions/1110080/iptables-allow-traffic-from-only-an-ip-and-one-port-to-one-port
#
# The location of the iptables program
#
IPTABLES=/sbin/iptables
#Set some stuff
#
EXTIF="ens5"
UNIVERSE="0.0.0.0/0"
echo 1110080_firewall $FWVER begin.
#Clearing any previous configuration
#
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
#$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
#$IPTABLES -t nat -F
# Reset all IPTABLES counters
$IPTABLES -Z
# loopback interfaces are valid.
#
$IPTABLES -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -s 192.168.0.12 -p tcp --sport 80 --dport 80 -j ACCEPT
#$IPTABLES -A INPUT -j DROP
echo 1110080_firewall $FWVER done.