添加 NIC 后防火墙突然阻止 NAT 流量

添加 NIC 后防火墙突然阻止 NAT 流量

我家里有一台服务器,以前有一个网卡,但我添加了第二个网卡以提供到电视调谐器的专用链接。

我从 eth0(板载 NIC)改为 enp7s0(新 NIC)和 enp9s1(板载 NIC 的新名称)。

所有服务均已更新以使用新的接口名称。

我的 iptables 脚本已更新为在适配器特定规则上使用新的接口名称(所有内容都使用 enp9s1,除了 DHCP 服务器和 enp7s0 上的 UDP 端口)

我的路由器配置没有改变,并且由于 MAC 地址没有改变,它应该仍然为 NIC 提供相同的 IP 地址(确实如此)。

但是,我很困惑为什么一切都在本地工作,而突然在 NAT 上却没有任何工作。我可以看到路由器正在转发数据包,但服务器仍然拒绝它们。即使暂时完全禁用防火墙后,它仍然不起作用。我所做的只是添加一个网卡。

那么,如何让服务器再次接受 NAT 数据包呢?

附件是我的防火墙脚本:

#!/bin/bash

# ============================
#    Command Aliases
#    (for faster typing)
# ============================
ip4='/sbin/iptables'
ip6='/sbin/ip6tables'

# logical interface names
nicmobo='enp9s1'
nicext1='enp7s0'

# ============================
#    Flush rules, delete
#    chains, zero counters
# ============================
$ip4 -F;$ip4 -X;$ip4 -Z
$ip6 -F;$ip6 -X;$ip6 -Z

# ============================
#    Default Rules
# ============================

# ----------------------
#   IPv4
# ----------------------

# Drop all incoming connections by default
$ip4 -P INPUT DROP
$ip4 -P FORWARD DROP
$ip4 -P OUTPUT ACCEPT

# Allow all connections from loopback intrface
$ip4 -A INPUT -i lo -j ACCEPT
# Allow all related/established incoming connections
$ip4 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# ----------------------
#   IPv6
# ----------------------
# Drop all incoming by default, unrestrict output
$ip6 -P INPUT DROP
$ip6 -P FORWARD DROP
$ip6 -P OUTPUT ACCEPT

# Allow loopback interface
$ip6 -A INPUT -i lo -j ACCEPT

# Reject connection attempt not initiated from the host
# $ip6 -A INPUT -p tcp --syn -j DROP

# Allow return connections initiated from the host
$ip6 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Acceot ICMPv6 packets
$ip6 -A INPUT -p ipv6-icmp -j ACCEPT


# ============================
#   SSH Connections on mobo
# ============================

# Allow incoming SSH connections on the ssh listening port (currently
# port 22 at the time of writing this)
$ip4 -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ip6 -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# Also allow SSH on 2322 from the local LAN
$ip4 -A INPUT -s 172.26.62.0/23 -p tcp -m tcp -m state --state NEW --dport 2322 -j ACCEPT


# ============================
#   VPN Ports on mobo
# ============================

# Allow L2TP/IPSEC UDP Ports 500, 4500
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m udp -p udp --dport 500 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m udp -p udp --dport 500 -j ACCEPT
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m udp -p udp --dport 4500 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m udp -p udp --dport 4500 -j ACCEPT
# Allow inbound TCP 992 for VPN connections
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 992 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 992 -j ACCEPT
# Allow inbound TCP 1194 for TCP openVPN connections
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 1194 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 1194 -j ACCEPT
# Allow inbound UDP 1194 for openVPN connections
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
# Allow inbound TCP 5555 for TCP VPN connections
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 5555 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 5555 -j ACCEPT


# ============================
#   Emby HTTPS Non-standard Port (8920) on mobo
# ============================
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 8920 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 8920 -j ACCEPT


# ===========================
#  HDHomerun Discovery Ports Allow from prvate lan only (second NIC)
# ===========================
$ip4 -i $nicext1 -A INPUT -s 172.27.0.0/28 -p udp -m state --state NEW -m udp --sport 65001 -j ACCEPT


# ===========================
#  Port 80, 443 on mobo
# ===========================
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
$ip4 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
$ip6 -i $nicmobo -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# ===========================
#  SAMBA on Local NETWORK on mobo
# ===========================
$ip4 -i $nicmobo -A INPUT -s 172.26.62.0/23 -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
$ip4 -i $nicmobo -A INPUT -s 172.26.62.0/23 -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT
$ip4 -i $nicmobo -A INPUT -s 172.26.62.0/23 -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT
$ip4 -i $nicmobo -A INPUT -s 172.26.62.0/23 -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT

# ===========================
#  Allow DHCP to private LAN (second NIC)
# ===========================
$ip4 -i $nicext1 -A INPUT -s 172.27.0.0/28 -p udp -m state --state NEW -m udp --dport 67 --sport 68 -j ACCEPT


exit 0

根据请求,这是我的 ip -4 路由列表输出:

default via 172.27.0.14 dev enp7s0 proto static 
default via 172.26.62.1 dev enp9s1 proto dhcp src 172.26.62.30 metric 100 
172.26.62.0/23 dev enp9s1 proto kernel scope link src 172.26.62.30 
172.26.62.1 dev enp9s1 proto dhcp scope link src 172.26.62.30 metric 100 
172.27.0.0/28 dev enp7s0 proto kernel scope link src 172.27.0.14 

另外,这是我的 iptables-save -c 输出:

# Generated by iptables-save v1.6.1 on Wed May 22 11:26:32 2019
*filter
:INPUT DROP [28356:9869864]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2899:379735]
[894:99268] -A INPUT -i lo -j ACCEPT
[1830:147589] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
[0:0] -A INPUT -s 172.26.62.0/23 -p tcp -m tcp --dport 2322 -m state --state NEW -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 992 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 1194 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 5555 -j ACCEPT
[4:240] -A INPUT -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 8920 -j ACCEPT
[0:0] -A INPUT -s 172.27.0.0/28 -i enp7s0 -p udp -m state --state NEW -m udp --sport 65001 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
[0:0] -A INPUT -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
[2:128] -A INPUT -s 172.26.62.0/23 -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
[4:256] -A INPUT -s 172.26.62.0/23 -i enp9s1 -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT
[36:3312] -A INPUT -s 172.26.62.0/23 -i enp9s1 -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT
[20:4724] -A INPUT -s 172.26.62.0/23 -i enp9s1 -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT
[9:2952] -A INPUT -s 172.27.0.0/28 -i enp7s0 -p udp -m state --state NEW -m udp --sport 68 --dport 67 -j ACCEPT
COMMIT
# Completed on Wed May 22 11:26:32 2019

我认为我的默认路线是问题所在。但是,如何修复并使其持久呢?

--- 编辑 5/22/19 07:40am CDT --- 一个 NIC,enp7s0,是一个适配器,用于创建一个新的 /28 LAN,无需 Internet 访问(无需 NAT)。它托管 172.27.0.0/28 网络。它还运行 DHCP 服务器,因为我使用的设备不支持静态 IP(我通过 DHCP 配置中的地址保留来设置它们)。另一个网卡 enp9s1 具有 DHCP 客户端、互联网访问和所有“常规”功能。我想我需要完全清除另一个网卡的默认路由。

我删除了 enp7s0 的默认路由,现在我可以远程访问服务器,并且我验证了其他所有内容仍然可以正常工作。现在重新启动并检查它是否重新添加自身,如果是,则不添加。

答案1

哇,我对 Linux 已经了解很多了,而且还有很多东西要学……

我必须编辑 netplan 配置文件(在 Ubuntu 中替换 ifupdown 的程序)并从我的新 NIC 中删除网关。我认为它需要一个只是出于习惯,但由于它无法访问互联网,因此不需要网关。

这意味着在 shell 中...

nano /etc/netplan/01-netcfg.yaml

并删除最后一行:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).

#enp9s1 - onboard adapter
#enp7s0 - addon nic


# old config
# (Commented out old config)
# end old config

# begin new config

network:
  version: 2
  renderer: networkd
  ethernets:
    enp9s1:
      dhcp4: yes
    enp7s0:
      dhcp4: no
      addresses: [172.27.0.14/28]
      gateway4: 172.27.0.14

这可以防止创建不必要的静态路由。

然后我又运行了两个命令,第一个命令用于创建所有配置文件(我还没有研究 netplan 下发生的所有情况,但这是必要的)。第二个将更改提交到系统而无需重新启动,更改所有网络设置以匹配您的配置文件。在这种情况下,它删除了默认网关。

netplan generate
netplan apply

随后的重新启动将使用配置文件并且路由将保持不变。

现在,每次重新启动,我的路线都是:

default via 172.26.62.1 dev enp9s1 proto dhcp src 172.26.62.30 metric 100 
172.26.62.0/23 dev enp9s1 proto kernel scope link src 172.26.62.30 
172.26.62.1 dev enp9s1 proto dhcp scope link src 172.26.62.30 metric 100 
172.27.0.0/28 dev enp7s0 proto kernel scope link src 172.27.0.14 

相关内容