Đây là vấn đề tôi đang cố gắng giải quyết. Có một máy chủ ("hệ thống từ xa") mà tôi có thể truy cập từ máy tính cục bộ của mình nhưng hệ thống từ xa này không có kết nối internet. Tôi muốn cung cấp cho hệ thống từ xa quyền truy cập vào internet thông qua máy tính cục bộ của tôi bằng cách sử dụng VPN dựa trên ssh. Làm thế nào để tôi thực hiện điều này? Tôi đã thử những điều sau đây, có vẻ như một phần hoạt động. Ý tôi là 'hoạt động một phần' là các gói kết nối (gói đồng bộ hóa) được gửi đến máy tính cục bộ của tôi nhưng không thể thiết lập kết nối với internet. Tôi đang sử dụng tcpdump để chụp các gói trên máy tính cục bộ. Cả máy tính cục bộ và hệ thống từ xa đều chạy centos 7.
Thiết lập - Lưu ý: các lệnh bên dưới được chạy theo thứ tự. Các lệnh user @ remote được chạy trên máy chủ từ xa và các lệnh user @ local được chạy trên máy tính cục bộ.
[người dùng @ từ xa ~] $ ip addr hiển thị 1: lo: mtu 65536 qdisc noqueue state UNKNOWN liên kết / loopback 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00 inet 127.0.0.1/8 phạm vi máy chủ lo valid_lft mãi mãi ưa thích_lft mãi mãi inet6 :: máy chủ phạm vi 1/128 valid_lft mãi mãi ưa thích_lft mãi mãi 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 liên kết / ether AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff: inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 phạm vi eth0 động toàn cầu hợp lệ_lft 1785 giây ưa thích_lft 1785 giây inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 phạm vi toàn cầu noprefixroute động hợp lệ_lft 2591987sec ưa thích_lft 604787sec inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 phạm vi liên kết valid_lft mãi mãi ưa thích_lft mãi mãi
[người dùng @ địa phương ~] $ ip addr hiển thị 1: lo: mtu 65536 qdisc noqueue state UNKNOWN liên kết / loopback 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00 inet 127.0.0.1/8 phạm vi máy chủ lo valid_lft mãi mãi ưa thích_lft mãi mãi inet6 :: máy chủ phạm vi 1/128 valid_lft mãi mãi ưa thích_lft mãi mãi 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 liên kết / ether AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff: inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 phạm vi eth0 động toàn cầu hợp lệ_lft 1785 giây ưa thích_lft 1785 giây inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 phạm vi toàn cầu noprefixroute động hợp lệ_lft 2591987sec ưa thích_lft 604787sec inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 phạm vi liên kết valid_lft mãi mãi ưa thích_lft mãi mãi
Tạo giao diện tun0 trên hệ thống từ xa .
[user @ remote ~] $ sudo ip tuntap thêm chế độ tun0 tun [người dùng @ từ xa ~] $ ip addr hiển thị 1: lo: mtu 65536 qdisc noqueue state UNKNOWN liên kết / loopback 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00 inet 127.0.0.1/8 phạm vi máy chủ lo valid_lft mãi mãi ưa thích_lft mãi mãi inet6 :: máy chủ phạm vi 1/128 valid_lft mãi mãi ưa thích_lft mãi mãi 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 liên kết / ether AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff: inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 phạm vi eth0 động toàn cầu hợp lệ_lft 1785 giây ưa thích_lft 1785 giây inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 phạm vi toàn cầu noprefixroute động hợp lệ_lft 2591987sec ưa thích_lft 604787sec inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 phạm vi liên kết valid_lft mãi mãi ưa thích_lft mãi mãi 3: tun0: mtu 1500 qdisc noop state DOWN qlen 500 liên kết / không
Tạo giao diện tun0 trên hệ thống cục bộ .
[user @ local ~] $ sudo ip tuntap thêm chế độ tun0 tun [người dùng @ địa phương ~] $ ip addr hiển thị 1: lo: mtu 65536 qdisc noqueue state UNKNOWN liên kết / loopback 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00 inet 127.0.0.1/8 phạm vi máy chủ lo valid_lft mãi mãi ưa thích_lft mãi mãi inet6 :: máy chủ phạm vi 1/128 valid_lft mãi mãi ưa thích_lft mãi mãi 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 liên kết / ether AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff: inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 phạm vi eth0 động toàn cầu hợp lệ_lft 1785 giây ưa thích_lft 1785 giây inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 phạm vi toàn cầu noprefixroute động hợp lệ_lft 2591987sec ưa thích_lft 604787sec inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 phạm vi liên kết valid_lft mãi mãi ưa thích_lft mãi mãi 3: tun0: mtu 1500 qdisc noop state DOWN qlen 500 liên kết / không
Gán một địa chỉ IP cho tun0 và đưa nó lên:
[user @ local ~] $ sudo ip addr thêm 10.0.2.1/30 dev tun0 [user @ local ~] $ sudo ip link set dev tun0 up [user @ local ~] $ ip addr hiển thị tun0 3: tun0: mtu 1500 qdisc pfifo_fast state DOWN qlen 500 liên kết / không inet 10.0.2.1/30 phạm vi toàn cầu tun0 valid_lft mãi mãi ưa thích_lft mãi mãi
[user @ remote ~] $ sudo ip addr thêm 10.0.2.2/30 dev tun0 [user @ remote ~] $ sudo ip link set dev tun0 up [người dùng @ từ xa ~] $ ip addr hiển thị tun0 3: tun0: mtu 1500 qdisc pfifo_fast state DOWN qlen 500 liên kết / không inet 10.0.2.2/30 phạm vi toàn cầu tun0 valid_lft mãi mãi ưa thích_lft mãi mãi
Sửa đổi sshd_config trên cả hệ thống từ xa và cục bộ để cho phép tạo đường hầm:
[người dùng @ từ xa ~] $ sudo grep PermitTunnel / etc / ssh / sshd_config PermitTunnel điểm-điểm
[user @ local ~] $ sudo grep PermitTunnel / etc / ssh / sshd_config PermitTunnel điểm-điểm
Tạo đường hầm ssh:
[người dùng @ cục bộ ~] $ sudo ssh -f -w0: 0 root @ remote true mật khẩu của root @ remote: [người dùng @ địa phương ~] $ ps phụ | root grep @ từ xa gốc 1851 0,0 0,0 76112 1348? Ss 23:12 0:00 ssh -f -w0: 0 root @ từ xa đúng
Kiểm tra ping trên cả hai máy chủ bằng các địa chỉ IP mới:
[người dùng @ cục bộ ~] $ ping 10.0.2.2 -c 2 PING 10.0.2.2 (10.0.2.2) 56 (84) byte dữ liệu. 64 byte từ 10.0.2.2: icmp_seq = 1 ttl = 64 time = 1.68 ms 64 byte từ 10.0.2.2: icmp_seq = 2 ttl = 64 time = 0.861 ms --- Thống kê ping 10.0.2.2 --- 2 gói được truyền, 2 nhận, mất gói 0%, thời gian 1002ms rtt tối thiểu / avg / max / mdev = 0.861 / 1.274 / 1.688 / 0.415 ms
[người dùng @ từ xa ~] $ ping 10.0.2.1 -c 2 PING 10.0.2.1 (10.0.2.1) 56 (84) byte dữ liệu. 64 byte từ 10.0.2.1: icmp_seq = 1 ttl = 64 time = 0.589 ms 64 byte từ 10.0.2.1: icmp_seq = 2 ttl = 64 time = 0.889 ms --- Thống kê ping 10.0.2.1 --- 2 gói được truyền, 2 nhận, mất gói 0%, thời gian 1000ms rtt tối thiểu / avg / max / mdev = 0,589 / 0,739 / 0,889 / 0,125 ms
[người dùng @ từ xa ~] $ tuyến Bảng định tuyến IP kernel Cổng đích Genmask Flag Số liệu tham khảo sử dụng Iface cổng mặc định 0.0.0.0 UG 100 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0 AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 [user @ remote ~] $ ip lộ trình mặc định thông qua AAA.BBB.CCC.1 dev eth0 proto static metric 100 Liên kết phạm vi hạt nhân 10.0.2.0/30 dev tun0 proto src 10.0.2.2 Liên kết phạm vi hạt nhân proto AAA.BBB.CCC.0 / 24 dev eth0 src AAA.BBB.CCC.31 metric 100
Nhận địa chỉ IP của google:
[người dùng @ địa phương ~] $ nslookup google.com Máy chủ: máy chủ Địa chỉ: máy chủ # 53 Câu trả lời không có thẩm quyền: Tên: google.com Địa chỉ: 173.194.219.101 Tên: google.com Địa chỉ: 173.194.219.100 Tên: google.com Địa chỉ: 173.194.219.113 Tên: google.com Địa chỉ: 173.194.219.102 Tên: google.com Địa chỉ: 173.194.219.139 Tên: google.com Địa chỉ: 173.194.219.138
QUAN TRỌNG: Tôi đã chạy lệnh trên vào một thời điểm khác nhau và nhận được một kết quả khác. Đừng cho rằng phản hồi của bạn sẽ giống như của tôi đối với nslookup ở trên.
Vì tất cả các địa chỉ IP của google bắt đầu bằng 173.194.219, cho phép định tuyến tất cả các địa chỉ IP này qua máy tính cục bộ.
[user @ remote ~] $ sudo ip tuyến thêm 173.194.219.0/24 dev tun0 [người dùng @ từ xa ~] $ tuyến Bảng định tuyến IP kernel Cổng đích Genmask Flag Số liệu tham khảo sử dụng Iface cổng mặc định 0.0.0.0 UG 100 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0 AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 173.194.219.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 [user @ remote ~] $ ip lộ trình mặc định thông qua AAA.BBB.CCC.1 dev eth0 proto static metric 100 Liên kết phạm vi hạt nhân 10.0.2.0/30 dev tun0 proto src 10.0.2.2 Liên kết phạm vi hạt nhân proto AAA.BBB.CCC.0 / 24 dev eth0 src AAA.BBB.CCC.31 metric 100 173.194.219.0/24 dev tun0 phạm vi liên kết
Kích hoạt ip_forwarding:
[người dùng @ cục bộ ~] $ grep ip_forward /etc/sysctl.conf net.ipv4.ip_forward = 1 [user @ local ~] $ sudo khởi động lại mạng dịch vụ Khởi động lại mạng (thông qua systemctl): [OK]
Thiết lập chụp gói trên máy tính cục bộ bằng tcpdump:
[user @ local ~] $ sudo tcpdump -nn -vv 'cổng không 22' -i bất kỳ tcpdump: nghe trên bất kỳ, LINUX_SLL loại liên kết (Linux đã nấu), kích thước chụp 65535 byte
Cố gắng kết nối với google từ máy chủ từ xa.
[người dùng @ từ xa ~] $ openssl s_client -connect google.com:443 ổ cắm: Không có tuyến đường đến máy chủ kết nối: errno = 113
Ngay khi lệnh openssl được chạy trên máy chủ từ xa, tcpdump sẽ bắt một số gói:
10.0.2.2.52768> 173.194.219.102.443: Cờ [S], cksum 0x8702 (đúng), seq 994650730, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701438 ecr 0, nop, wscale 7] 00: 49: 33.247753 IP (to 0x0, ttl 64, id 46037, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.48774> 173.194.219.100.443: Cờ [S], cksum 0x47a7 (đúng), seq 2218733674, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701439 ecr 0, nop, wscale 00: 49: 33.247883 IP (to 0xc0, ttl 64, id 9538, offset 0, cờ [none], proto ICMP (1), chiều dài 88) 10.0.2.1> 10.0.2.2: Máy chủ ICMP 173.194.219.100 không truy cập được - quản trị viên bị cấm, chiều dài 68 IP (tos 0x0, ttl 63, id 46037, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.48774> 173.194.219.100.443: Cờ [S], cksum 0x47a7 (đúng), seq 2218733674, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701439 ecr 0, nop, wscale 00: 49: 33.253068 IP (to 0x0, ttl 64, id 26282, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.51312> 173.194.219.101.443: Cờ [S], cksum 0x6ff8 (đúng), seq 2634016105, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701443 ecr 0, nop, wscale 7 00: 49: 33.254771 IP (to 0xc0, ttl 64, id 9539, offset 0, cờ [none], proto ICMP (1), chiều dài 88) 10.0.2.1> 10.0.2.2: Máy chủ ICMP 173.194.219.101 không thể truy cập - quản trị viên bị cấm, chiều dài 68 IP (tos 0x0, ttl 63, id 26282, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.51312> 173.194.219.101.443: Cờ [S], cksum 0x6ff8 (đúng), seq 2634016105, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701443 ecr 0, nop, wscale 7 00: 49: 33.258805 IP (to 0x0, ttl 64, id 9293, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.33686> 173.194.219.139.443: Cờ [S], cksum 0x542b (đúng), seq 995927943, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701450 ecr 0, nop, wscale 00: 49: 33.258845 IP (to 0xc0, ttl 64, id 9540, offset 0, cờ [none], proto ICMP (1), chiều dài 88) 10.0.2.1> 10.0.2.2: Máy chủ ICMP 173.194.219.139 không thể truy cập - quản trị viên bị cấm, chiều dài 68 IP (tos 0x0, ttl 63, id 9293, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.33686> 173.194.219.139.443: Cờ [S], cksum 0x542b (đúng), seq 995927943, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7701450 ecr 0, nop, wscale ^ C 13 gói được chụp 13 gói được nhận bởi bộ lọc 0 gói bị bỏ bởi kernel
Các gói được ghi lại bằng tcpdump cho thấy một nỗ lực được thực hiện để thiết lập kết nối (Các gói đồng bộ được gửi) nhưng không nhận được gì. Ngoài ra có một thông điệp 10.0.2.1 > 10.0.2.2: ICMP host 173.194.219.139 unreachable - admin prohibited, length 68
dường như đề nghị một vấn đề.
Bất kỳ đề xuất về cách làm việc xung quanh vấn đề này? Có quy tắc iptable cần phải được thêm vào? Bất kỳ vấn đề tường lửa (tường lửa-d?).
Lưu ý # 1
Kết quả từ iptables-save:
[user @ local ~] $ sudo iptables -t nat -A POSTROUTING -s 10.0.2.2/32! -d 10.0.2.1/30 -j MASQUERADE -o eth0 [người dùng @ cục bộ ~] $ sudo iptables-save # Được tạo bởi iptables-save v1.4.21 vào ngày 15 tháng 4, 01:40:57 2017 * nat : CHẤP NHẬN QUYỀN [35: 8926] : VÀO CHẤP NHẬN [1:84] : CHẤP NHẬN ĐẦU TƯ [6: 439] : CHẤP NHẬN ĐIỂM [6: 439] : OUTPUT_direct - [0: 0] : POSTROUTING_ZONES - [0: 0] : POSTROUTING_ZONES_SOURCE - [0: 0] : POSTROUTING_direct - [0: 0] : POST_public - [0: 0] : POST_public_allow - [0: 0] : POST_public_deny - [0: 0] : POST_public_log - [0: 0] : PREROUTING_ZONES - [0: 0] : PREROUTING_ZONES_SOURCE - [0: 0] : PREROUTING_direct - [0: 0] : PRE_public - [0: 0] : PRE_public_allow - [0: 0] : PRE_public_deny - [0: 0] : PRE_public_log - [0: 0] -A PREROUTING -j PREROUTING_direct -A PREROUTING -j PREROUTING_ZONES_SOURCE -A PREROUTING -j PREROUTING_ZONES -A OUTPUT -j OUTPUT_direct -MỘT ĐIỂM -j POSTROUTING_direct -MỘT ĐIỂM -j POSTROUTING_ZONES_SOURCE -MỘT ĐIỂM -j POSTROUTING_ZONES -MỘT ĐIỂM -s 10.0.2.2 / 32! -d 10.0.2.0/30 -j MẶT NẠ -A POSTROUTING_ZONES -o eth0 -g POST_public -A POSTROUTING_ZONES -g POST_public -A POST_public -j POST_public_log -A POST_public -j POST_public_deny -A POST_public -j POST_public_allow -A PREROUTING_ZONES -i eth0 -g PRE_public -A PREROUTING_ZONES -g PRE_public -A PRE_public -j PRE_public_log -A PRE_public -j PRE_public_deny -A PRE_public -j PRE_public_allow CAM KẾT # Đã hoàn thành vào ngày 15 tháng 4, 01:40:57 2017 # Được tạo bởi iptables-save v1.4.21 vào ngày 15 tháng 4, 01:40:57 2017 * mangle : CHẤP NHẬN QUYỀN [169: 18687] : CHẤP NHẬN [144: 11583] : CHẤP NHẬN [0: 0] : CHẤP NHẬN ĐẦU RA [80: 8149] : CHẤP NHẬN ĐIỂM [80: 8149] : FORWARD_direct - [0: 0] : INPUT_direct - [0: 0] : OUTPUT_direct - [0: 0] : POSTROUTING_direct - [0: 0] : PREROUTING_ZONES - [0: 0] : PREROUTING_ZONES_SOURCE - [0: 0] : PREROUTING_direct - [0: 0] : PRE_public - [0: 0] : PRE_public_allow - [0: 0] : PRE_public_deny - [0: 0] : PRE_public_log - [0: 0] -A PREROUTING -j PREROUTING_direct -A PREROUTING -j PREROUTING_ZONES_SOURCE -A PREROUTING -j PREROUTING_ZONES -A INPUT -j INPUT_direct -A FORWARD -j FORWARD_direct -A OUTPUT -j OUTPUT_direct -MỘT ĐIỂM -j POSTROUTING_direct -A PREROUTING_ZONES -i eth0 -g PRE_public -A PREROUTING_ZONES -g PRE_public -A PRE_public -j PRE_public_log -A PRE_public -j PRE_public_deny -A PRE_public -j PRE_public_allow CAM KẾT # Đã hoàn thành vào ngày 15 tháng 4, 01:40:57 2017 # Được tạo bởi iptables-save v1.4.21 vào ngày 15 tháng 4, 01:40:57 2017 *Bảo vệ : CHẤP NHẬN [2197: 163931] : CHẤP NHẬN [0: 0] : CHẤP NHẬN ĐẦU RA [1229: 185742] : FORWARD_direct - [0: 0] : INPUT_direct - [0: 0] : OUTPUT_direct - [0: 0] -A INPUT -j INPUT_direct -A FORWARD -j FORWARD_direct -A OUTPUT -j OUTPUT_direct CAM KẾT # Đã hoàn thành vào ngày 15 tháng 4, 01:40:57 2017 # Được tạo bởi iptables-save v1.4.21 vào ngày 15 tháng 4, 01:40:57 2017 * nguyên : CHẤP NHẬN QUYỀN [2362: 184437] : CHẤP NHẬN ĐẦU RA [1229: 185742] : OUTPUT_direct - [0: 0] : PREROUTING_direct - [0: 0] -A PREROUTING -j PREROUTING_direct -A OUTPUT -j OUTPUT_direct CAM KẾT # Đã hoàn thành vào ngày 15 tháng 4, 01:40:57 2017 # Được tạo bởi iptables-save v1.4.21 vào ngày 15 tháng 4, 01:40:57 2017 * bộ lọc : VÀO CHẤP NHẬN [0: 0] : CHẤP NHẬN [0: 0] : CHẤP NHẬN ĐẦU RA [80: 8149] : FORWARD_IN_ZONES - [0: 0] : FORWARD_IN_ZONES_SOURCE - [0: 0] : FORWARD_OUT_ZONES - [0: 0] : FORWARD_OUT_ZONES_SOURCE - [0: 0] : FORWARD_direct - [0: 0] : FWDI_public - [0: 0] : FWDI_public_allow - [0: 0] : FWDI_public_deny - [0: 0] : FWDI_public_log - [0: 0] : FWDO_public - [0: 0] : FWDO_public_allow - [0: 0] : FWDO_public_deny - [0: 0] : FWDO_public_log - [0: 0] : INPUT_ZONES - [0: 0] : INPUT_ZONES_SOURCE - [0: 0] : INPUT_direct - [0: 0] : IN_public - [0: 0] : IN_public_allow - [0: 0] : IN_public_deny - [0: 0] : IN_public_log - [0: 0] : OUTPUT_direct - [0: 0] -A INPUT -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN -A INPUT -i lo -j CHẤP NHẬN -A INPUT -j INPUT_direct -A INPUT -j INPUT_ZONES_SOURCE -A INPUT -j INPUT_ZONES -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -j DỰ ÁN - từ chối-với icmp-host-bị cấm -A FORWARD -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN -A FORWARD -i lo -j CHẤP NHẬN -A FORWARD -j FORWARD_direct -A FORWARD -j FORWARD_IN_ZONES_SOURCE -A FORWARD -j FORWARD_IN_ZONES -A FORWARD -j FORWARD_OUT_ZONES_SOURCE -A FORWARD -j FORWARD_OUT_ZONES -A FORWARD -m conntrack --ctstate InvALID -j DROP -A FORWARD -j DỰ ÁN - từ chối-với icmp-host-bị cấm -A OUTPUT -j OUTPUT_direct -A FORWARD_IN_ZONES -i eth0 -g FWDI_public -A FORWARD_IN_ZONES -g FWDI_public -A FORWARD_OUT_ZONES -o eth0 -g FWDO_public -A FORWARD_OUT_ZONES -g FWDO_public -A FWDI_public -j FWDI_public_log -A FWDI_public -j FWDI_public_deny -A FWDI_public -j FWDI_public_allow -A FWDI_public -p icmp -j CHẤP NHẬN -A FWDO_public -j FWDO_public_log -A FWDO_public -j FWDO_public_deny -A FWDO_public -j FWDO_public_allow -A INPUT_ZONES -i eth0 -g IN_public -A INPUT_ZONES -g IN_public -A IN_public -j IN_public_log -A IN_public -j IN_public_deny -A IN_public -j IN_public_allow -A IN_public -p icmp -j CHẤP NHẬN -A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate MỚI -j CHẤP NHẬN CAM KẾT # Đã hoàn thành vào ngày 15 tháng 4, 01:40:57 2017
Lưu ý # 2:
Tôi thiết lập máy chủ web apache trên một máy chủ riêng biệt mà chỉ máy chủ cục bộ mới có quyền truy cập. Tôi đã chạy tcpdump trên máy chủ web nghe trên cổng 80. Khi tôi chạy,
telnet webserver 80
tôi chụp các gói sau. Đây là hành vi dự kiến kể từ khi TCP Connection được thiết lập (S, S-Ack, Ack).
[user @ webserver ~] $ sudo tcpdump -nn -vv 'cổng không phải 22 và 80' -i eth0 tcpdump: nghe trên eth0, EN10MB loại liên kết (Ethernet), kích thước chụp 65535 byte 07: 17: 30.411474 IP (to 0x10, ttl 64, id 34376, offset 0, cờ [DF], proto TCP (6), chiều dài 60) local.server.46710> web.server.80: Cờ [S], cksum 0x8412 (không chính xác -> 0x6d96), seq 3018586542, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 3047398 ecr 0, nop, wscale 7 , dài 0 07: 17: 30.411557 IP (to 0x0, ttl 64, id 0, offset 0, cờ [DF], proto TCP (6), chiều dài 60) web.server.80> local.server.46710: Cờ [S.], cksum 0x8412 (không chính xác -> 0x9114), seq 2651711943, ack 3018586543, giành chiến thắng 28960, tùy chọn [mss 1460, sackOK, TS val 37704524 ecr 3047 , wscale 7], chiều dài 0 07: 17: 30.411725 IP (to 0x10, ttl 64, id 34377, offset 0, cờ [DF], proto TCP (6), chiều dài 52) local.server.46710> web.server.80: Cờ [.], cksum 0x840a (không chính xác -> 0x301c), seq 1, ack 1, win 229, tùy chọn [nop, nop, TS val 3047398 ecr 37704524], độ dài 0
Khi tôi cố gắng kết nối với máy chủ web từ máy chủ từ xa thông qua máy chủ cục bộ, tcpdump trên máy chủ web không thu được bất kỳ gói tin nào (thậm chí cả Sync ban đầu) nhưng máy chủ cục bộ sẽ bắt gói Sync được gửi đến máy chủ web (xem bên dưới). Điều này khiến tôi tin rằng một cái gì đó đang ngăn các gói tin được gửi đến máy chủ web - có thể là cấu hình sai hoặc tường lửa.
[user @ local ~] $ sudo tcpdump -nn -vv 'cổng không 22 và 80' -i bất kỳ tcpdump: nghe trên bất kỳ, LINUX_SLL loại liên kết (Linux đã nấu), kích thước chụp 65535 byte 02: 24: 09.15842 IP (to 0x10, ttl 64, id 38062, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.50558> web.server.80: Cờ [S], cksum 0x668d (đúng), seq 69756226, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 4780524 ecr 0, nop, wscale 7], độ dài 0
QUAN TRỌNG: các gói không được định tuyến thông qua eth0 mà thay vào đó, nỗ lực được thực hiện để gửi các gói đến máy chủ web thông qua tun0 (không thành công). Tôi có thể xác nhận điều này bằng cách chạy tcpdump trên giao diện tun0:
[user @ local ~] $ sudo tcpdump -nn -vv 'cổng không phải 22 và 80' -i tun0 tcpdump: nghe trên tun0, RAW loại liên kết (IP thô), kích thước chụp 65535 byte 02: 28: 10.295972 IP (to 0x10, ttl 64, id 46976, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.50560> webserver.80: Cờ [S], cksum 0xd560 (đúng), seq 605366388, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 5021684 ecr 0, nop, wscale 7], chiều dài 0
Lưu ý # 3:
Tôi đã tắt tường lửa trong máy tính cục bộ và các gói Sync được máy chủ web nhận được.
[user @ local ~] $ sudo systemctl dừng tường lửa
[user @ webserver ~] $ sudo tcpdump -nn -vv 'cổng không phải 22 và 80' -i eth0 tcpdump: nghe trên eth0, EN10MB loại liên kết (Ethernet), kích thước chụp 65535 byte 08: 25: 17.390912 IP (to 0x10, ttl 63, id 61767, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.50580> web.server.80: Cờ [S], cksum 0x30dc (đúng), seq 2601927549, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7123514 ecr 0, nop, wscale 7], độ dài 0 08: 25: 17,391003 IP (to 0x0, ttl 64, id 0, offset 0, cờ [DF], proto TCP (6), chiều dài 60) web.server.80> 10.0.2.2.50580: Cờ [S.], cksum 0x4e23 (không chính xác -> 0xa316), seq 959115533, ack 2601927550, giành chiến thắng 28960, tùy chọn [mss 1460, sackOK, TS val 41771503 , wscale 7], chiều dài 0 08: 25: 17,391192 IP (to 0x0, ttl 128, id 60032, offset 0, cờ [none], proto TCP (6), chiều dài 40) 10.0.2.2.50580> web.server.80: Cờ [R], cksum 0x7339 (chính xác), seq 2601927550, thắng 8192, dài 0 08: 25: 18,393794 IP (to 0x10, ttl 63, id 61768, offset 0, cờ [DF], proto TCP (6), chiều dài 60) 10.0.2.2.50580> web.server.80: Cờ [S], cksum 0x2cf1 (đúng), seq 2601927549, thắng 29200, tùy chọn [mss 1460, sackOK, TS val 7124517 ecr 0, nop, wscale 7] 08: 25: 18,393898 IP (to 0x0, ttl 64, id 0, offset 0, cờ [DF], proto TCP (6), chiều dài 60) web.server.80> 10.0.2.2.50580: Cờ [S.], cksum 0x4e23 (không chính xác -> 0x7e71), seq 974785773, ack 2601927550, giành chiến thắng 28960, tùy chọn [mss 1460, sackOK, TS val 41772506 , wscale 7], chiều dài 0 08: 25: 18.394003 IP (to 0x0, ttl 128, id 60033, offset 0, cờ [none], proto TCP (6), chiều dài 40) 10.0.2.2.50580> web.server.80: Cờ [R], cksum 0x566a (đúng), seq 2601927550, thắng 8192, dài 0
Bây giờ rõ ràng, IP nguồn cần được cập nhật để khớp với địa chỉ IP của máy chủ cục bộ trước khi gói được gửi đến máy chủ web. Như @xin đề xuất, NAT cần được thiết lập trên máy chủ cục bộ.
Lưu ý # 4:
Khi tôi cố gắng kết nối với máy chủ web, tôi có thể thấy rằng số pkts cho quy tắc 9 tăng lên 1 (như được thấy bên dưới).
[user @ local ~] $ sudo iptables -nvL - số dòng .......... Chuỗi FORWARD (chính sách CHẤP NHẬN 0 gói, 0 byte) num pkts byte mục tiêu chọn tham gia trong nguồn đích 1 0 0 CHẤP NHẬN tất cả - * * 0.0.0.0/0 0.0.0.0/0 ctstate LIÊN QUAN, THÀNH LẬP 2 0 0 CHẤP NHẬN tất cả - lo * 0.0.0.0/0 0.0.0.0/0 3 1 60 FORWARD_direct tất cả - * * 0.0.0.0/0 0.0.0.0/0 4 1 60 FORWARD_IN_ZONES_SOURCE tất cả - * * 0.0.0.0/0 0.0.0.0/0 5 1 60 FORWARD_IN_ZONES tất cả - * * 0.0.0.0/0 0.0.0.0/0 6 1 60 FORWARD_OUT_ZONES_SOURCE tất cả - * * 0.0.0.0/0 0.0.0.0/0 7 1 60 FORWARD_OUT_ZONES tất cả - * * 0.0.0.0/0 0.0.0.0/0 8 0 0 DROP tất cả - * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 9 1 60 DỰ ÁN tất cả - * * 0.0.0.0/0 0.0.0.0/0 từ chối-với icmp-host-bị cấm .......... [user @ local ~] $ sudo iptables -D FORWARD 9
Khi quy tắc 9 từ chuỗi FORWARD bị xóa (từ trên, như @xin đề xuất), tôi có thể kết nối với máy chủ web.
[user @ local ~] $ sudo iptables -nvL - số dòng .......... Chuỗi FORWARD (chính sách CHẤP NHẬN 1 gói, 60 byte) num pkts byte mục tiêu chọn tham gia trong nguồn đích 1 12 5857 CHẤP NHẬN tất cả - * * 0.0.0.0/0 0.0.0.0/0 ctstate LIÊN QUAN, THÀNH LẬP 2 0 0 CHẤP NHẬN tất cả - lo * 0.0.0.0/0 0.0.0.0/0 3 2 120 FORWARD_direct tất cả - * * 0.0.0.0/0 0.0.0.0/0 4 2 120 FORWARD_IN_ZONES_SOURCE tất cả - * * 0.0.0.0/0 0.0.0.0/0 5 2 120 FORWARD_IN_ZONES tất cả - * * 0.0.0.0/0 0.0.0.0/0 6 2 120 FORWARD_OUT_ZONES_SOURCE tất cả - * * 0.0.0.0/0 0.0.0.0/0 7 2 120 FORWARD_OUT_ZONES tất cả - * * 0.0.0.0/0 0.0.0.0/0 8 0 0 DROP tất cả - * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID ..........