![NIC를 추가한 후 방화벽이 갑자기 NAT 트래픽을 차단합니다.](https://linux55.com/image/154070/NIC%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%9C%20%ED%9B%84%20%EB%B0%A9%ED%99%94%EB%B2%BD%EC%9D%B4%20%EA%B0%91%EC%9E%90%EA%B8%B0%20NAT%20%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84%20%EC%B0%A8%EB%8B%A8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
이전에 네트워크 카드가 있었던 서버가 집에 있지만 TV 튜너에 대한 전용 링크를 제공하기 위해 두 번째 네트워크 카드를 추가했습니다.
eth0(온보드 NIC)에서 enp7s0(새 NIC) 및 enp9s1(온보드 NIC의 새 이름)로 변경했습니다.
모든 서비스가 새 인터페이스 이름을 사용하도록 업데이트되었습니다.
내 iptables 스크립트가 어댑터별 규칙에서 새 인터페이스 이름을 사용하도록 업데이트되었습니다(DHCP 서버와 enp7s0의 UDP 포트를 제외한 모든 것이 enp9s1을 사용함).
내 라우터 구성은 변경되지 않았고 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
내 기본 경로가 문제인 것 같아요. 하지만 어떻게 고치고 지속시킬 수 있을까요?
--- EDIT 5/22/19 07:40am CDT --- 하나의 NIC인 enp7s0은 인터넷 액세스 없이(NAT 필요 없음) 새로운 /28 LAN을 생성하는 데 사용되는 어댑터입니다. 172.27.0.0/28 네트워크를 호스팅합니다. 또한 제가 사용하고 있는 장치가 고정 IP를 지원하지 않기 때문에 DHCP 서버도 실행합니다(DHCP 구성에서 주소 예약을 통해 설정했습니다). 다른 네트워크 카드인 enp9s1에는 DHCP 클라이언트, 인터넷 액세스 및 모든 "일반" 기능이 있습니다. 다른 네트워크 카드의 기본 경로를 완전히 지워야 할 것 같습니다.
enp7s0의 기본 경로를 제거했고 이제 원격으로 서버에 액세스할 수 있으며 다른 모든 것이 여전히 잘 작동하는지 확인했습니다. 이제 재부팅하고 자동으로 다시 추가되는지 확인하세요. 그렇다면 그렇지 않습니다.
답변1
와, 나는 이미 Linux에 대해 많은 것을 알고 있고, 아직도 배울 것이 많습니다...
netplan 구성 파일(Ubuntu에서 ifupdown을 대체하는 프로그램)을 편집하고 새 NIC에서 게이트웨이를 제거해야 했습니다. 습관적으로 필요하다고 생각하지만 인터넷에 접속할 수 없기 때문에 게이트웨이가 필요하지 않습니다.
이는 쉘에서 ...
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