我家里有一台服务器,以前有一个网卡,但我添加了第二个网卡以提供到电视调谐器的专用链接。
我从 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