Làm thế nào để định tuyến lưu lượng mạng của một máy chủ thông qua một máy chủ khác?


9

Tôi không phải là Quản trị viên Hệ thống của mạng công ty của chúng tôi, nhưng tôi đã có hai máy trạm Linux (máy chủ A và B) có quyền truy cập root vào cả hai.

Cả hai máy chủ đều có thể nhìn thấy nhau tốt (ssh, ping, vv hoạt động từ cái này sang cái khác). Tuy nhiên, chỉ có máy chủ A mới có thể truy cập vào tường lửa của công ty chúng tôi và truy cập Internet, v.v. máy chủ B không thể.

Câu hỏi: Làm cách nào tôi có thể có tất cả (và không chỉ HTTP) lưu lượng truy cập mạng đến và đi tại máy chủ B được định tuyến qua máy chủ A mà không liên quan đến Quản trị viên hệ thống của tôi? Ngay bây giờ, tôi không biết liệu tôi có cần sử dụng NAT cho máy chủ B hay không và / hoặc biến máy chủ A thành máy chủ proxy và / hoặc biến máy chủ A thành bộ định tuyến.

Trên Host B, tôi đã thử đưa ra một route add -host <HostA> gw <HostA's Gateway>lệnh, nhưng nó không hoạt động: Tôi không thể truy pingcập www.google.com từ Host B. Xin thứ lỗi cho sự thiếu hiểu biết của tôi về chủ đề định tuyến / kết nối mạng này.

Câu trả lời:


16

Bạn có nhiều giải pháp để làm điều này:

Cách dễ dàng hơn: NAT

Tạo một bộ định tuyến bằng cách cho phép chuyển tiếp: sysctl net.ipv4.ip_forward=1 Đặt net.ipv4.ip_forward=1vào /etc/sysctl.conf để làm cho nó vĩnh viễn.

Sau đó, trên A, nat bằng cách gõ: iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE

Cuối cùng trên B: Định tuyến tất cả lưu lượng truy cập qua A:

ip route del default  
ip route add default via IP_of_A

Giải pháp khác: Xông hơi ,

nhưng bạn cần thiết lập tất cả các thành phần để sử dụng proxy:

Trên B, mở kết nối SSH tới A bằng lệnh này:

ssh -D8000 -N -f user@IP_of_A 

Điều này sẽ mở một sock proxy trên B và chuyển tiếp tất cả lưu lượng truy cập qua A. Ví dụ: nếu bạn sử dụng trình duyệt web, bạn sẽ cần thiết lập một sock proxy v5 trên 127.0.0.1 nghe trên cổng 8000. Bạn sẽ không cần thiết lập ip chuyển tiếp hoặc chạm vào các tuyến đường.


Khi ban hành ip route addlệnh, tôi đã gặp lỗi này:Error: either "to" is duplicate, or "gw" is a garbage.
Harry

Btw, DrGkill, tôi sẽ đánh giá rất cao, TUYỆT VỜI nếu bạn cũng có thể đề cập đến những cách khác. Ngoài ra, một số cuốn sách / tài nguyên trong đó các khái niệm này được đề cập một cách thực tế. Tôi không cần lý thuyết giống Tannenbaum, thay vì các khái niệm và các lệnh Linux thực tế tôi có thể thử và học sẽ hữu ích. Không chắc chắn, nếu ngày rõ ràng [ faqs.org/docs/linux_network/index.html[(Linux Network Administrator 'Guide) vẫn còn hiện hành và bao gồm công thức bạn đã đưa ra ở trên. Cảm ơn nhiều và Chúa phù hộ.
Harry

Cú pháp đúng là ip route add default viahoặc route add default gw.
lượng tử

Chỉnh sửa sai, cộng với cách proxy được thêm vào. Thưởng thức.
DrGkill

1
Cảm ơn lượng tử! Lệnh đã được chấp nhận thành công. Nhưng, khi tôi bây giờ ping www.google.com, tôi gặp From hostA (<ipaddrOfHostA>) icmp_seq=1 Destination Host Prohibitedlỗi và mất gói 100%.
Harry

1

Tôi tin rằng bạn sẽ cần phải vô hiệu hóa tường lửa của bạn.

service iptables stop

Không chắc chắn nếu điều đó là cần thiết trên cả Máy chủ A & Máy chủ B, nhưng nó đã giúp tôi vượt qua thông báo "Cấm máy chủ đích"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.