Linux

如何為同一介面上的多個 IP 設置不同的規則?

  • January 7, 2017

我是 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

l

我引用了以下幾行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

引用自:https://unix.stackexchange.com/questions/335590