Hôm qua, tôi đã đăng một câu hỏi ở đây nhưng tôi nghĩ rằng tôi không đủ rõ ràng trong lời nói của mình. BTW, Câu hỏi này không phải là một bản sao.
Tôi có AWS VPC Setup như bên dưới.
MỤC TIÊU / VẤN ĐỀ : SSH đến Máy chủ A từ internet. Và nó không hoạt động.
Máy chủ A nằm trong mạng con riêng tư và do đó tôi muốn kích hoạt iptables NATing trên phiên bản NAT của mình để tôi có thể ssh đến SErver A trực tiếp từ internet
Tôi đã chạy bên dưới lệnh trên NAT dụ:
NAT# iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
Chuyển tiếp IP được bật trên phiên bản NAT:
NAT# sysctl -p
net.ipv4.ip_forward = 1
MASQUERADE đang chạy trên NAT dụ:
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
Các nhóm bảo mật AWS được cấu hình tốt để cho phép truy cập khác nhau cần thiết cho trường hợp thử nghiệm này.
Xử lý sự cố:
Tôi có thể telnet từ NAT đến Server A trên cổng 22. Vì vậy, Access rất tốt.
Khi tôi chạy telnet 54.213.116.251 2222
trên máy tính xách tay của mình, tôi thấy mục bên dưới trong tcpdump trên 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
Vì vậy, nó có nghĩa là iptables đang định tuyến các gói đến 10.0.1.243
. (BTW, xxx.xxx.xxx.xxx
là địa chỉ IP công cộng của máy tính xách tay của tôi)
Nhưng khi tôi chạy tcpdump trên Máy chủ A, tôi không thấy bất cứ thứ gì đến từ 10.0.0.54
đó là địa chỉ IP Nội bộ / Riêng tư của NAT ( Và tôi nghĩ đây là vấn đề ):
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
Nhưng nếu tôi telnet từ NAT dụ đến Máy chủ A, tôi sẽ thấy nội dung tốt trong tcpdump trên Máy chủ A ( Điều này có nghĩa là PREROUTING
Quy tắc chung của tôi không hoạt động như mong đợi ):
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
Phần kết luận:
Từ đầu ra tcpdump trên NAT, có vẻ như Iptables đang chuyển tiếp các gói của tôi tốt.
từ kết xuất TCP trên Máy chủ A, tôi có kết nối tốt từ NAT đến Máy chủ A.
Nhưng trong End-to-end, tôi không thể kết nối với máy chủ A từ máy tính xách tay của mình.
( BTW, tôi biết đường hầm SSH và những thứ tốt khác. Nhưng tôi chỉ muốn Iptables giúp tôi điều này. )
Disabled
dành cho phiên bản NAT.