如何对同一接口的多个IP设置不同的规则?

如何对同一接口的多个IP设置不同的规则?

我是 iptables 的新手,对如何设置它感到困惑。看起来我有 2 个以太网卡,但有 4 个 IP 地址。那里没有问题。在我的网络/接口中,看起来它们都在 enp2s0f0 上。假设进入服务器的网络与 enp2s0f0 相同,我可以将其中 2 个更改为接口 enp2s0f1 吗?

如果在 iptables 中指定 eth0 (在我的例子中是 enp2s0f0),那么我应该如何为每个 IP 制定规则?

我试图做的是在网络/接口中指定 iface,如下所示,但是当我专门将其设置为 enp2s0f0:0 和 enp2s0f0 时,iptables 将目标显示为“任何地方”

iptables -A INPUT -i enp2s0f0 -p tcp --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp2s0f0 -p tcp --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp2s0f0:0 -p tcp --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp2s0f0:0 -p tcp --sports 80,443 -m state --state ESTABLISHED -j ACCEPT

这是我的输出,显示了我的界面......

$ls /sys/class/net
enp2s0f0  enp2s0f1  lo

$cat /etc/network/interfaces
auto lo
iface lo inet loopback

# The primary network interface
auto enp2s0f0
iface enp2s0f0 inet static
        address xx.xx.xx.76
        netmask 255.255.255.0
        network xx.xx.xx.0
        broadcast xx.xx.xx.255
        gateway xx.xx.xx.1

auto enp2s0f0:0
iface enp2s0f0:0 inet static
        address xx.xx.xx.77
        netmask 255.255.255.0
        network xx.xx.xx.0
        broadcast xx.xx.xx.255

auto enp2s0f0:1
iface enp2s0f0:1 inet static
        address xx.xx.xx.78
        netmask 255.255.255.0
        network xx.xx.xx.0
        broadcast xx.xx.xx.255

auto enp2s0f0:2
iface enp2s0f0:2 inet static
        address xx.xx.xx.79
        netmask 255.255.255.0
        network xx.xx.xx.0
        broadcast xx.xx.xx.255

答案1

我引用以下几行man iptables

[!] -p, --protocol protocol
       The  protocol  of  the rule or of the packet to check.
[!] -s, --source address[/mask][,...]
       Source specification. Address can be either a network name, a hostname, 
       a net‐work IP address (with /mask),  or  a  plain  IP  address.  
[!] -d, --destination address[/mask][,...]
       Destination  specification.

我考虑这样的情况:您有两个接口,每个接口都有两个静态 IP,因为您可以这样做。所以,如果你想匹配特定的IP,你可以重新安排你的规则:

iptables -A INPUT  -i enp2s0f0 -p tcp -s 0.0.0.0 -d <IP> --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp2s0f0 -p tcp -s <IP> -d 0.0.0.0 --sports 80,443 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT  -i enp2s0f1 -p tcp -s 0.0.0.0 -d <IP> --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp2s0f1 -p tcp -s <IP> -d 0.0.0.0 --sports 80,443 -m state --state ESTABLISHED -j ACCEPT

当然,你必须更改<IP>你的机器IP。如果您只想允许来自/到某些 IP 的连接0.0.0.0也发生变化。

相关内容