최신 버전의 (Debian) 라즈베리 파이 OS가 설치된 Raspberry Pi 4가 있습니다. iptables
Pi(사용)의 모든 트래픽을 다른 컴퓨터(IP 주소 사용 가정)로 리디렉션하도록 구성하려고 합니다 . 이는 DNS 기반 종속 포털을 호스팅할 다른 컴퓨터를 테스트하기 위한 것이며 모든 트래픽을 이 종속 포털 컴퓨터(IP B)로 전달하려고 합니다. 저는 헤드리스 설정을 좋아하기 때문에 전달하지 않고 SSH 연결을 유지할 수 있다면 좋을 것 같습니다.
NAT 테이블( )에서 이 규칙 세트를 시도했습니다 iptables
. 나는 내가 시도한 것이 IP A에서 IP B로 UDP 트래픽을 전달하려고 시도했다는 것을 깨달았습니다. 이것은 작동하지 않습니다.
root@pi4:/home/pi# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 7 packets, 1155 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT udp -- * * <IP A> <resolver IP> udp dpt:53 to:<IP B>
Chain INPUT (policy ACCEPT 7 packets, 1155 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * * 0.0.0.0/0 0.0.0.0/0
어떤 도움이나 조언이라도 대단히 감사하겠습니다.
답변1
나는 그것을 생각했다! 내 체인 규칙이 단순히 잘못된 위치에 배치된 것으로 나타났습니다. 내부적으로 생성된 대상 IP 주소를 수정하고 싶기 때문에 PREROUTING 규칙을 OUTPUT에 넣어야 합니다. 마지막으로 내 NAT 테이블은 다음과 같습니다(질문에서 자리 표시자 IP를 유지하세요).
# Generated by iptables-save v1.8.7
*nat
:PREROUTING ACCEPT [22:2797]
:INPUT ACCEPT [22:2797]
:OUTPUT ACCEPT [129:8883]
:POSTROUTING ACCEPT [129:8883]
-A OUTPUT -d <resolver IP>/32 -p udp -m udp --dport 53 -j DNAT --to-destination <IP B>:<port B>
-A POSTROUTING -d <IP B>/32 -p udp -m udp --dport <port B> -j SNAT --to-source <IP A>
COMMIT
# Completed on