เมื่อวานนี้ฉันโพสต์คำถามที่นี่แต่ฉันคิดว่าไม่ชัดเจนเพียงพอในคำพูดของฉัน BTW คำถามนี้ไม่ซ้ำกัน
ฉันมีการติดตั้ง AWS VPC ดังนี้
เป้าหมาย / ปัญหา : SSH ไปยังเซิร์ฟเวอร์ A จากอินเทอร์เน็ต และมันไม่ทำงาน
เซิร์ฟเวอร์ A อยู่ในซับเน็ตส่วนตัวและด้วยเหตุนี้ฉันต้องการเปิดใช้งาน iptables NATing บนอินสแตนซ์ NAT ของฉันเพื่อที่ฉันจะสามารถ ssh ไปยัง SErver A ได้โดยตรงจากอินเทอร์เน็ต
ฉันกำลังติดตามสิ่งนี้และสิ่งนี้
ฉันรันคำสั่งด้านล่างในตัวอย่าง NAT:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
การส่งต่อ IP ถูกเปิดใช้งานบนอินสแตนซ์ NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE กำลังทำงานบนอินสแตนซ์ NAT:
NAT# iptables -t nat -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 6 packets, 312 bytes)
pkts bytes target prot opt in out source destination
199 16466 MASQUERADE all -- * eth0 10.0.0.0/16 0.0.0.0/0
กลุ่มความปลอดภัย AWS ได้รับการปรับแต่งเพื่อให้สามารถใช้งานได้หลากหลายสำหรับกรณีทดสอบนี้
การแก้ไขปัญหา:
ฉันสามารถเทลเน็ตจาก NAT ไปยังเซิร์ฟเวอร์ A บนพอร์ต 22 ได้ดังนั้นการเข้าถึงก็ดี
เมื่อฉันใช้งานtelnet 54.213.116.251 2222
แล็ปท็อปฉันเห็นรายการด้านล่างใน tcpdump บน NAT:
NAT# tcpdump -n -i eth0 dst 10.0.1.243 and port 22
09:59:13.738316 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
09:59:16.737009 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
09:59:22.775567 IP xxx.xxx.xxx.xxx.51709 > 10.0.1.243.ssh: Flags [S], seq 1868541786, win 8192, options [mss 1460,nop,nop,sackOK], length 0
ดังนั้นจึงหมายความว่า iptables 10.0.1.243
เป็นเส้นทางที่จะแพ็คเก็ต (BTW xxx.xxx.xxx.xxx
เป็นที่อยู่ IP สาธารณะของแล็ปท็อปของฉัน)
แต่เมื่อฉันรัน tcpdump บนเซิร์ฟเวอร์ A ฉันไม่เห็นสิ่งใดที่มาจาก10.0.0.54
ที่อยู่ IP ภายใน / ส่วนตัวของ NAT ( และฉันคิดว่านี่เป็นปัญหา ):
Server A# tcpdump -n src 10.0.0.54
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
แต่ถ้าฉันเทลเน็ตจากอินสแตนซ์ NAT ไปยังเซิร์ฟเวอร์ A ฉันเห็นสิ่งดีๆใน tcpdump บนเซิร์ฟเวอร์ A ( ซึ่งหมายความว่าPREROUTING
กฎโดยรวมของฉันไม่ทำงานตามที่คาดไว้ ):
Server A# tcpdump -n src 10.0.0.54
05:01:47.500080 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [S], seq 2862522431, win 14600, options [mss 1460,sackOK,TS val 3013083 ecr 0,nop,wscale 7], length 0
05:01:47.501601 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [.], ack 760676524, win 115, options [nop,nop,TS val 3013083 ecr 12074896], length 0
05:01:47.535720 IP 10.0.0.54.44627 > 10.0.1.243.ssh: Flags [.], ack 22, win 115, options [nop,nop,TS val 3013092 ecr 12074928], length 0
สรุป:
จากเอาต์พุต tcpdump บน NAT ดูเหมือนว่า Iptables กำลังส่งต่อแพ็กเก็ตของฉันได้ดี
จากการถ่ายโอนข้อมูล TCP บนเซิร์ฟเวอร์ A ฉันมีการเชื่อมต่อที่ดีจาก NAT ไปยังเซิร์ฟเวอร์ A
แต่ใน End-to-end ฉันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ A จากแล็ปท็อปของฉันได้
( BTW ฉันรู้อุโมงค์ SSH และสิ่งดีๆอื่น ๆ แต่ฉันต้องการเพียงแค่ Iptables เพื่อช่วยฉันในเรื่องนี้ )
Disabled
สำหรับอินสแตนซ์ NAT