우분투 라우터 포트 포워딩

우분투 라우터 포트 포워딩

네트워크 내부의 컴퓨터에 포트 80, 443, 32400을 전달하려고 합니다. 따라서 EXTIP:80의 트래픽은 SERVERIP:80으로 전송되어야 하며 이러한 변경 사항이 지속되면 라우터를 다시 시작하는 것도 도움이 됩니다. 라우터에는 EXTIP와 INTIP라는 두 개의 IP가 있습니다. NAT 없이 모뎀에 직접 연결됩니다. 라우터는 내부 서버의 NAT를 관리합니다.

나는 인터넷에서 많은 iptable 변경을 시도했는데, 일반적으로 더 이상 라우터에 SSH를 연결할 수 없거나 아웃바운드 트래픽이 작동하지 않는 등의 부작용이 있었습니다. 라우터는 ufw 및 failure2ban도 실행합니다.

답변1

아직 테스트하지는 않았지만 다음과 같이 시도해 보겠습니다.

iptables -t nat -A PREROUTING --protocol tcp --destination EXTIP --destination-port 80 -j DNAT --to-destination SERVERIP

다른 포트도 비슷합니다. 이것이 도움이 될 수 있습니까?

답변2

이것은 비교적 간단한 규칙 집합처럼 들립니다.

  1. 루프백 시 무엇이든 허용
  2. 아웃바운드 요청의 "나머지 절반"에 있는 모든 것을 허용합니다.
  3. 모든 콘텐츠가 유출되도록 허용합니다(라우터에서 INT로, 라우터에서 EXT로, INT에서 EXT로).
  4. INT에서 포트 22 허용(설명에서 유추됨)
  5. EXT에서 포트 80을 허용하고 이를 내부 서버로 전달합니다.
  6. EXT에서 포트 443을 허용하고 이를 내부 서버로 전달합니다.
  7. EXT에서 포트 32400을 허용하고 내부 서버로 전달합니다.

이것이 나의 제안입니다. 현재 사용 가능한 두 개의 인터페이스 VM이 없으므로 테스트되지 않았습니다.

# Definitions
INTIF=eth1             # Internal interface
EXTIF=eth0             # External interface
SERVERIP=192.168.1.12  # Internal webserver address

# Prepare to wipe the ruleset, so default to allowing everything
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# Erase the rulesets
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING

# Allow anything on loopback
iptables -i lo -j ACCEPT

# Allow anything in that is the "other half" of an outbound request
iptables -A INPUT -m state --state ESTABLISHED,RELATED

# Allow anything out (from router to INT, router to EXT, or INT to EXT)
iptables -A OUTPUT -j ACCEPT

# Allow port 22 in from INT (inferred from your explanation)
# Strictly, this is only required if you apply additional restrictions
# in the next rule, but I'm going to leave it here anyway
iptables -A INPUT -i $INTIF -p tcp --dport 22 -j ACCEPT

# Allow everything through from INT
# This allows internal access to the router too. You could add some extra
# rules here that disallow access to both the router's own IP addresses
iptables -A INPUT -i $INTIF -j ACCEPT

# Allow port 80 in from EXT, and forward it on to the internal server
# Allow port 443 in from EXT, and forward it on to the internal server
# Allow port 32400 in from EXT, and forward it on to the internal server
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 80 -j DNAT --to-destination $SERVERIP
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 443 -j DNAT --to-destination $SERVERIP
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 32400 -j DNAT --to-destination $SERVERIP

# Set the default action to discard all traffic
iptables -P INPUT DENY
iptables -P OUTPUT DENY

# Enable forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward

관련 정보