Iptablesเป็นวิธีที่จะไป
sysctl -w net.ipv4.conf.eth0.route_localnet=1 # to enable redirecting to localhost
EXTERNAL_IP=8.8.8.8 #change this line to reflect external ipaddress
sudo iptables -t nat -A OUTPUT -d ${EXTERNAL_IP} -j DNAT --to-destination 127.0.0.1
ทำลายมันลง
-t nat
ช่วยให้คุณอ้างถึง 127.0.0.1 เป็นปลายทางที่ถูกต้อง
-A OUTPUT
ผนวกเข้ากับOUTPUT
ห่วงโซ่ของ iptables นี่คือห่วงโซ่ในตัวใช้ โซ่ในตัวอื่นมีอยู่เช่นINPUT
ซึ่งใช้กับแพ็คเก็ตที่เข้ามาและPREPROCESSING
ซึ่งใช้กับแพ็คเก็ตที่เข้ามาทั้งหมดก่อนที่โซ่ bulit ในอื่น ๆ จะได้รับพวกเขา คุณยังสามารถสร้างเครือข่ายของคุณเองและผนวกเข้ากับหนึ่งในเครือข่ายในตัวเหล่านี้เพื่อการจัดการการตั้งค่าที่ดีขึ้น
-d ${EXTERNAL_IP}
ตัวกรองที่อยู่ IP ปลายทางของแพ็กเก็ตที่ผ่านห่วงโซ่เอาท์พุท
-j DNAT
กำหนดเป้าหมายของกฎเป็นDNAT
ซึ่งช่วยให้คุณสามารถแก้ไขที่อยู่ปลายทางของแพ็กเก็ต
--to-destination 127.0.0.1
is พารามิเตอร์ไปยังเป้าหมาย DNAT ที่ระบุสิ่งที่จะเปลี่ยนแปลงเกี่ยวกับแพ็กเก็ตที่ตรงกันเหล่านี้
นอกจากนี้คุณยังสามารถ จำกัด พอร์ตการเปลี่ยนเส้นทางของที่อยู่โดยใช้--dports ${ORIGINAL_PORT_NUMBER}
หลัง-d ${EXTERNAL_IP}
และมีพวกเขาอีกครั้งเพื่อเดินทางไปยังพอร์ตเฉพาะโดยการผนวกพอร์ต 127.0.0.1 127.0.0.1:${FINAL_PORT_NUMBER}
เช่นดังนั้น
การถอด
ใช้สิ่งต่อไปนี้เพื่อลบออกจาก iptables
sudo iptables -t nat -D OUTPUT -d ${EXTERNAL_IP} -j DNAT --to-destination 127.0.0.1 #note -A was replaced by -A
และตรวจสอบรายชื่อ iptable ด้วยsudo iptables -t nat -L -n -v
ตำแหน่งที่-t nat
ให้คุณดูการแมป iptable รวมถึงรายการที่เกี่ยวข้องกับ NAT
การกระทำเพิ่มเติม
คุณอาจต้องทำการปลอมแปลงหรือเปลี่ยนเส้นทางแพ็คเก็ตจากเซิร์ฟเวอร์ postgres ของคุณเพื่อให้ตรงกับที่อยู่ IP ภายนอกและพอร์ตที่คาดหวังหากคุณวางแผนที่จะสื่อสารกับแอปพลิเคชันและแอปพลิเคชันตรวจสอบแหล่งที่อยู่
ที่เกี่ยวข้อง