Tôi có thể tạo ghi đè dns tương tự như ghi vào / etc / hosts mà không cần quyền truy cập root


48

Tôi muốn thiết lập một bản ghi dns mà trình duyệt của tôi sẽ sử dụng, nhưng tôi không có quyền truy cập root, vì vậy tôi không thể sửa đổi /etc/hosts. Tôi cần phải làm điều này để thử nghiệm vhost với apache, mà dns chưa được thiết lập. Tôi có quyền truy cập vào firefox và chrome, vì vậy nếu có một plugin có thể hỗ trợ nó; hoặc các tùy chọn khác là hữu ích.

cập nhật: giải pháp thay thế cho việc ghi đè các dns có thể là sửa đổi các tiêu đề HTTP, nếu các tiêu đề chính xác được gửi đến apache, nội dung chính xác sẽ được trả về.


1
Dòng cuối cùng không rõ ràng. Ngoài ra, điều này sẽ không phù hợp hơn trong SF?
tshepang

@tshepang ... không vì tôi cần làm điều này trên máy tính để bàn linux?
xenoterracide

1
Vẫn chưa rõ lắm. Chính xác "hoặc các tùy chọn khác là hữu ích" nghĩa là gì? Đừng làm tôi đoán.
tshepang

3
@tshepang Tôi không biết mình đang tìm gì ... nếu tôi biết tại sao tôi lại hỏi? có thể có những lựa chọn mà tôi chưa xem xét. Tôi cảm thấy như bạn đang yêu cầu tôi giải thích cách các máy chủ ảo apache, http và dns hoạt động cùng nhau.
xenoterracide

Tôi nghĩ rằng bạn đang tìm kiếm điều này: unix.stackexchange.com/a/104511/135943
Wildcard

Câu trả lời:


65

Tôi đang tìm cách để chạy một chương trình với độ phân giải DNS được sửa đổi cho mục đích thử nghiệm. Đối với tôi, giải pháp là sử dụng HOSTALIASESbiến môi trường:

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo

Xem hostname(7).

(Lưu ý bên: Trong ví dụ, HOSTALIASESbiến môi trường chỉ ảnh hưởng đến wgetquá trình. Tất nhiên, bạn có thể export HOSTALIASESđể nó có hiệu lực cho tất cả các quy trình con của trình bao hiện tại.)


1
thực sự điều này sẽ giống như + 10k, thật không may, tôi chỉ có thể cung cấp cho bạn +1
xenoterracide

Tôi đồng ý! + 10k !!
Anders Hansson

3
Cảm ơn rất nhiều! Ví dụ nên trả trước exporttrong hầu hết các trường hợp : export HOSTALIASES=~/.hosts.
ezequiel-garzon

8
có vẻ như chỉ hỗ trợ máy chủ lưu trữ bí danh, không phải IP và máy chủ không thể chứa ".".
netawater

Có giải pháp tương tự cho Windows không?
Akceptor

10

Bạn có thể viết một trình bao bọc xung quanh hàm libc để phân giải tên máy chủ và tìm kiếm chúng trong một tệp khác với / etc / hosts. Sau đó chạy bất kỳ ứng dụng nào bạn muốn sử dụng tệp máy chủ của mình với

LD_PRELOAD=wrapper.so firefox

4
Hữu ích nhất, làm cho trình bao bọc của bạn chuyển hướng mở /etc/nsswitch.confđến ~/.nsswitch.confvà tạo một ~/.nsswitch.conftruy vấn cơ sở dữ liệu DNS của bạn.
Gilles 'SO- ngừng trở nên xấu xa'

6

Tôi nghĩ cách tốt nhất để làm điều này là thiết lập proxy SOCKS5 và yêu cầu firefox gửi các yêu cầu DNS qua proxy SOCKS5 (network.proxy.socks_remote_dns). Bạn có thể thiết lập proxy vớ5 với openssh khá dễ dàng (tùy chọn -D) và có một máy chủ từ xa chạy với tùy chỉnh / etc / hosts hoặc một cái gì đó như DNSMasq cho các cài đặt DNS phức tạp hơn. Tuy nhiên, về mặt hiệu quả, điều này sẽ đẩy cấu hình của cài đặt DNS sang một hệ thống mà bạn có thể thực hiện các thay đổi trên toàn hệ thống.


nói dễ hơn làm, xem xét tường lửa tuyệt vời đã được dựng lên để chặn chúng tôi khỏi ssh-ing ...
xenoterracide

5

Kiểm tra câu hỏi sau tại superuser:

https://superuser.com/questions/184643/override-dns-in-firefox

Nếu các tùy chọn thảo luận và liên kết SO không phải là giải pháp khả thi thì hãy kiểm tra:

https://superuser.com/questions/100239/hostname-override-in-firefox

Đặc biệt là kiểm tra:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

Nghe có vẻ như addon này có thể giúp - nhưng tôi phụ thuộc vào việc thực hiện thực tế của nó.


Thật không may giống như op trong câu hỏi đó không ai trong số này có vẻ khả thi.
xenoterracide

@xenoterracide - Tôi đã cập nhật câu trả lời của mình - có lẽ tiện ích bổ sung chuyển hướng là một tùy chọn?
maxschlepzig

Tôi không nghĩ như vậy theo cách mà nó đã diễn ra .. điều tôi thực sự cần làm là sửa đổi các tiêu đề HTTP được gửi ... như một lựa chọn thay thế cho việc hack xung quanh bằng cách sử dụng máy chủ
xenoterracide

Tôi chọc vào giải pháp SO (TamperData) nhưng tôi không thấy cách sửa đổi máy chủ trong đó. Tôi tự hỏi nếu điều tiêu đề http trực tiếp thực sự cho phép tôi sửa đổi tiêu đề, nó nói đó là người xem.
xenoterracide

Tôi nghĩ rằng tiện ích mở rộng Sửa đổi tiêu đề được liệt kê một chút trong SO one hoạt động ... nếu bạn sử dụng tên máy chủ lưu trữ ... trong đó ... chưa được thử nghiệm ... bên ngoài việc phá vỡ các trang web sử dụng nó.
xenoterracide

2

Để kiểm tra vhost, bạn có thể đặt máy chủ Apache làm proxy trong Firefox. Tên bạn đã nhập sẽ được chuyển tiếp đến Apache. Điều này sẽ phá vỡ các trang web khác để đặt lại proxy khi bạn hoàn thành.


0

Tôi cần một cái gì đó tương tự cho ssh, scp, v.v. cho một máy chủ luôn thay đổi IP mỗi vài tuần (và CNTT của chúng tôi có một vài tuần chậm trễ trong việc thiết lập máy chủ). Tôi đã giải quyết nó bằng một biến đặc biệt cho máy chủ này: export FOO='131.227.aaa.bbbvà sau đó tôi có thể làm ssh bar@$FOOvà tôi thay đổi IP ~/.bashrcbất cứ khi nào nó thay đổi ...


-2

Không may mắn, bạn không thể, ngoại trừ bạn viết trình duyệt internet của riêng bạn.

Nếu bạn phải thực hiện một số thử nghiệm, bạn cần một máy kiểm tra, bất kể máy ảo hay máy thật, vì vậy bạn phải hỏi quản trị viên Unix (hoặc nhà cung cấp dịch vụ lưu trữ) của bạn về cách bạn có thể đặt môi trường phát triển.

Bạn cũng có thể cài đặt VM trên PC, cài đặt bản phân phối Linux, Apache và kiểm tra các thay đổi của bạn (nó không khó như âm thanh)

Cập nhật

Để giải thích rõ hơn, mỗi ứng dụng được viết bằng các thư viện tiêu chuẩn, theo cách này, không ai phải viết lại thư viện cấp thấp và các chức năng như gethostbyname ().

Các chức năng này thường được đặt để sử dụng tệp (/ etc / hosts) và DNS, vì vậy, không may mắn, nếu bạn cần trình duyệt của mình sẽ phân giải tên hơn tên được đặt trong / etc / hosts bạn không có quá nhiều lựa chọn thay thế .

  1. Bạn có thể thiết lập máy chủ DNS của riêng mình và hỏi ai có quyền root để thay đổi /etc/resolve.conf
  2. Bạn có thể cài đặt máy chủ proxy như DeleGate và đặt một số quy tắc cho Virtualhost của bạn
  3. Hỏi quyền sudo trên máy chủ khách hàng đó
  4. Thay đổi hành vi của ứng dụng bạn đang sử dụng để kiểm tra kết nối (tôi đoán trình duyệt), ví dụ: https://addons.mozilla.org/en-US/firefox/addon/switchhosts/

4
-1 từ kém và bảo trợ. Tôi là nhà cung cấp dịch vụ lưu trữ và đó là trang web khách hàng chết tiệt trên máy chủ của chúng tôi mà tôi cần kiểm tra. Chúng tôi có một linux linux boot mà tôi không có quyền truy cập của quản trị viên và tôi không tin rằng tôi có thể khởi động VM trên nó.
xenoterracide

@xenoterracide không có quá nhiều điều để nói. Điều đó thực sự không khả thi với những gì bạn đang yêu cầu, ngoại trừ bạn thay đổi cách tạo SOCKET.
tmow

1
@xenoterracide BTW, không có ý định xúc phạm.
tmow

cũng như nhà cung cấp dịch vụ lưu trữ ... Tôi thực sự có "quyền sudo", tôi có quyền root thực sự trên mỗi hộp và truy cập đầy đủ mọi thứ ... ngoại trừ máy tính để bàn của tôi (eyeroll) nhưng nếu họ chưa muốn thay đổi máy chủ tên của họ .. Tôi không thể giúp điều đó ...
xenoterracide

1
với LD_PRELOAD, bạn có thể 'ghi đè' các chức năng 'cấp thấp' cụ thể và làm những gì bạn muốn, ví dụ: nói với chương trình về '/ etc / hosts' của riêng bạn open()và bất kỳ cuộc gọi cấp thấp nào khác .. miễn là tải mã động được kích hoạt (.so)
akira
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.