외부 서버의 기존 Nagios 설치에서 모니터링할 수 있도록 라우터에 대한 SNMP를 설정하려고 합니다. 몇 가지 다른 iptables 규칙을 시도했지만 라우터가 WAN의 SNMP 요청에 응답하도록 할 수 없습니다. 라우터는 AsusWRT 3.0.0.4.270.26(Merlin 버전)을 실행하는 새로운 Asus RT-AC66U입니다.
불행하게도 저는 최근 ISP로서 Comcast로 전환해야 했고 Comcast가 네트워크에서 포트 161과 162를 차단했다고 말했습니다. 이를 고려하여 1610을 161로 리디렉션하려고 합니다. 현재 내 NAS(1611->161)에 포트 전달이 설정되어 있고 SNMP가 제대로 작동합니다.
처음 시도한 것은 1610->127.0.0.1:161(UDP)에서 포트 전달 규칙을 설정하는 것이었지만 작동하지 않는 것 같습니다.
[ssube@centos-server ~]$ snmpwalk -v 2c -c [name] [ip]:1610
Timeout: No Response from [ip]:1610
[ssube@centos-server ~]$ snmpwalk -v 2c -c [name] [ip]:1611
SNMPv2-MIB::sysDescr.0 = STRING: Linux Triton 2.6.32.12 #2668 Tue Dec 11 12:36:30 CST 2012 armv5tel
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
NAS 규칙은 위에 표시된 대로 제대로 작동합니다. NAS 규칙을 제거하고 모든 라우터 규칙에서 1610을 1611로 바꾸는 것은 도움이 되지 않는 것 같습니다. 무엇을 시도해도 오류 메시지(응답 없음)가 일관됩니다.
두 번째 시도는 iptables 자체를 확인하는 것이었습니다. 저는 다음과 같은 규칙을 만들었습니다.
boss@RT-AC66U:/jffs/scripts# cat firewall-start
#!/bin/sh
iptables -I INPUT 1 -p udp --dport 1610 -j ACCEPT
boss@RT-AC66U:/jffs/scripts# cat nat-start
#!/bin/sh
iptables -t nat -A PREROUTING -p udp --dport 1610 -j REDIRECT --to-port 161
LAN 내부에서 라우터를 잘 볼 수 있습니다.
ssube@KRAKEN /c/Program Files/ConEmu > snmpwalk -v 2c -c [name] 192.168.1.1:1610
SNMPv2-MIB::sysDescr.0 = STRING: Linux RT-AC66U 2.6.22.19 #1 Sun Mar 17 17:16:27 EDT 2013 mips
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
그러나 INPUT 체인 규칙이 있든 없든 LAN 외부에서는 여전히 볼 수 없습니다. 두 규칙 모두 iptables에 나타납니다.
boss@RT-AC66U:/tmp/home/root# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
.....
ACCEPT udp -- anywhere anywhere udp dpt:1610
(DROP 규칙 앞과 관련 없는 ACCEPT 뒤에 나열됨)
boss@RT-AC66U:/jffs/scripts# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- anywhere [ip].comcast.net
REDIRECT udp -- anywhere anywhere udp dpt:1610 redir ports 161
그러나 외부 SNMP의 상황은 여전히 좋지 않습니다. 패킷이 전혀 들어오는지 확인하기 위해 tcpdump를 시도했지만 라우터에서 tcpdump를 실행하면 몇 초 안에 Wi-Fi에서 빠져나오는 것 같고 라우터를 연결하고 실행할 기회가 없었습니다. 그것은 여전히 거기에 있습니다(업데이트하면 그렇게 할 때 편집이 이루어집니다).
규칙이 나타나기 때문에 스크립트가 작동하는 것 같습니다. 규칙에 문제가 있는 것 같지만 정확히 찾아내는데 어려움을 겪고 있으며 아직 펌웨어 메시지 게시판에서 답변을 받지 못했습니다.
답변1
[WAN IP]:1610을 [LAN IP]:161로 직접 포트 포워딩하려는 것 같습니다. 다음 3가지 규칙이 이를 달성해야 합니다.
# forwards port 1610 -> 611
$ iptables -t nat -A PREROUTING -p tcp -d [LAN IP] --dport 1610 -j DNAT --to [LAN IP]:611
노트: [LAN IP]
내부 서버의 IP 주소가 됩니다.
# Allow 1610 traffic
iptables -A INPUT -i eth0 -p tcp --dport 1610 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 1610 -m state --state ESTABLISHED -j ACCEPT