博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xfce设置代理Proxy
阅读量:5926 次
发布时间:2019-06-19

本文共 11331 字,大约阅读时间需要 37 分钟。

hot3.png

在Debian系的Linux系统中,可以编辑/etc/environment文件,增加下面几行:

http_proxy=http://myproxy.server.com:8080/https_proxy=http://myproxy.server.com:8080/ftp_proxy=http://myproxy.server.com:8080/no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"HTTP_PROXY=http://myproxy.server.com:8080/HTTPS_PROXY=http://myproxy.server.com:8080/FTP_PROXY=http://myproxy.server.com:8080/NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"

然后执行

$ source /etc/environment

这时候,大部分的软件都可以通过代理上网了。

还有一部分使用Gnome配置的软件仍然不能上网,可以这样解决,命令行:

gsettings set org.gnome.system.proxy mode 'manual' gsettings set org.gnome.system.proxy.http host 'myproxy.server.com'gsettings set org.gnome.system.proxy.http port 8080

对于apt来说,还可以这样设定:

在/etc/apt/apt.conf.d/下创建一个文件,比如可以是:95proxies,内容是:

Acquire::http::proxy "http://myproxy.server.com:8080/";Acquire::ftp::proxy "ftp://myproxy.server.com:8080/";Acquire::https::proxy "https://myproxy.server.com:8080/";

当然,还有大神写的开启和关闭proxy的Bash:

proxyon.sh:

if [ $(id -u) -ne 0 ]; then  echo "This script must be run as root";  exit 1;fiif [ $# -eq 2 ]  then  gsettings set org.gnome.system.proxy mode 'manual' ;  gsettings set org.gnome.system.proxy.http host '$1';  gsettings set org.gnome.system.proxy.http port $2;  grep PATH /etc/environment > lol.t;  printf \  "http_proxy=http://$1:$2/\n\  https_proxy=http://$1:$2/\n\  ftp_proxy=http://$1:$2/\n\  no_proxy=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n\  HTTP_PROXY=http://$1:$2/\n\  HTTPS_PROXY=http://$1:$2/\n\  FTP_PROXY=http://$1:$2/\n\  NO_PROXY=\"localhost,127.0.0.1,localaddress,.localdomain.com\"\n" >> lol.t;  cat lol.t > /etc/environment;  printf \  "Acquire::http::proxy \"http://$1:$2/\";\n\  Acquire::ftp::proxy \"ftp://$1:$2/\";\n\  Acquire::https::proxy \"https://$1:$2/\";\n" > /etc/apt/apt.conf.d/95proxies;  rm -rf lol.t;  else  printf "Usage $0 
 
\n";fi

proxyoff.sh:

if [ $(id -u) -ne 0 ]; then  echo "This script must be run as root";  exit 1;figsettings set org.gnome.system.proxy mode 'none' ;grep PATH /etc/environment > lol.t;cat lol.t > /etc/environment;printf "" > /etc/apt/apt.conf.d/95proxies;rm -rf lol.t;

使用方法如下:

 $ sudo ./proxyon.sh 10.2.20.17 8080 OR $ sudo ./proxyon.sh myproxy.server.com 8080 $ sudo ./proxyoff.sh

更多的Bash也有这样写的(前面管用了,你可以忽略,我只是记录一下):

Some programs, such as and (used by ) curl, use environment variables of the form "protocol_proxy" to determine the proxy for a given protocol (e.g. HTTP, FTP, ...).

Below is an example on how to set these variables in a shell:

 export http_proxy=http://10.203.0.1:5187/ export https_proxy=$http_proxy export ftp_proxy=$http_proxy export rsync_proxy=$http_proxy export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

Some programs look for the all caps version of the environment variables.

If the proxy environment variables are to be made available to all users and all applications, the above mentioned export commands may be added to a script, say "proxy.sh" inside /etc/profile.d/. The script has to be then made executable. This method is helpful while using a Desktop Environment like which does not provide an option for proxy configuration. For example, browser will make use of the variables set using this method while running XFCE.

Alternatively you can automate the toggling of the variables by adding a function to your .bashrc (thanks to Alan Pope for original script idea)

function proxy_on() {    export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"    if (( $# > 0 )); then        valid=$(echo $@ | sed -n 's/\([0-9]\{1,3\}.\)\{4\}:\([0-9]\+\)/&/p')        if [[ $valid != $@ ]]; then            >&2 echo "Invalid address"            return 1        fi        export http_proxy="http://$1/"        export https_proxy=$http_proxy        export ftp_proxy=$http_proxy        export rsync_proxy=$http_proxy        echo "Proxy environment variable set."        return 0    fi    echo -n "username: "; read username    if [[ $username != "" ]]; then        echo -n "password: "        read -es password        local pre="$username:$password@"    fi    echo -n "server: "; read server    echo -n "port: "; read port    export http_proxy="http://$pre$server:$port/"    export https_proxy=$http_proxy    export ftp_proxy=$http_proxy    export rsync_proxy=$http_proxy    export HTTP_PROXY=$http_proxy    export HTTPS_PROXY=$http_proxy    export FTP_PROXY=$http_proxy    export RSYNC_PROXY=$http_proxy}function proxy_off(){    unset http_proxy    unset https_proxy    unset ftp_proxy    unset rsync_proxy    echo -e "Proxy environment variable removed."}

Omit username or password if they are not needed.

As an alternative, you may want to use the following script. Change the strings "YourUserName", "ProxyServerAddress:Port", "LocalAddress" and "LocalDomain" to match your own data, then edit your ~/.bashrc to include the edited functions. Any new bash window will have the new functions. In existing bash windows, type source ~/.bashrc. You may prefer to put function definitions in a separate file like functions then add source functions to .bashrc instead of putting everything in .bashrc. You may also want to change the name "myProxy" into something short and easy to write.

 #!/bin/bash assignProxy(){   PROXY_ENV="http_proxy ftp_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY ALL_PROXY"   for envar in $PROXY_ENV   do     export $envar=$1   done   for envar in "no_proxy NO_PROXY"   do      export $envar=$2   done } clrProxy(){   assignProxy "" # This is what 'unset' does. } myProxy(){   user=YourUserName   read -p "Password: " -s pass &&  echo -e " "   proxy_value="http://$user:$pass@ProxyServerAddress:Port"   no_proxy_value="localhost,127.0.0.1,LocalAddress,LocalDomain.com"   assignProxy $proxy_value $no_proxy_value }

Keep proxy through sudo

If the proxy environment variables are set for the user only (say, from manual commands or .bashrc) they will get lost when running commands with (or when programs use sudo intenally).

A way to prevent that is to add the following line to the sudo configuration file (accessible with visudo) :

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

You may also add any other environment variable, like rsync_proxy, or no_proxy.

Automation with network managers

  • cannot change the environment variables.

  • could set-up these environment variables but they would not be seen by other applications as they are not child of netctl.

About libproxy

(which is available in the extra repository) is an abstraction library which should be used by all applications that want to access a network resource. It still is in development but could lead to a unified and automated handling of proxies in GNU/Linux if widely adopted.

The role of libproxy is to read the proxy settings form different sources and make them available to applications which use the library. The interesting part with libproxy is that it offers an implementation of the and an implementation of that goes with it.

The /usr/bin/proxy binary takes URL(s) as argument(s) and returns the proxy/proxies that could be used to fetch this/these network resource(s).

Note: the version 0.4.11 does not support http_proxy='wpad:' because { pkg-config 'mozjs185 >= 1.8.5'; } fails .

As of 06/04/2009 libproxy is required by libsoup. It is then indirectly used by the browser.

Web Proxy Options

  • is a very popular caching/optimizing proxy

  • is an anonymizing and ad-blocking proxy

  • For a simple proxy, ssh with port forwarding can be used

Simple Proxy with SSH

Connect to a server (HOST) on which you have an account (USER) as follows

ssh -D PORT USER@HOST

For PORT, choose some number which is not an IANA registered port. This specifies that traffic on the local PORT will be forwarded to the remote HOST. ssh will act as a server. Software supporting SOCKS proxy servers can simply be configured to connect to PORT on localhost.

Using a SOCKS proxy

There are two cases:

  • the application you want to use handles proxies (for example ), then you just have to configure it to use the proxy.

  • the application you want to use does not handle SOCKS proxies, then you can try to use or .

In Firefox, you can use the SOCKS proxy in the menu Preferences > Network > Settings. Choose "Manual Proxy Configuration", and set the SOCKS Host (and only this one, make sure the other fields, such as HTTP Proxy or SSL Proxy are left empty). For example, if a SOCKS5 proxy is running on localhost port 8080, put "127.0.0.1" in the SOCKS Host field, "8080" in the Port field, and validate.

If using proxychains-ng, the configuration takes place in /etc/proxychains.conf. You may have to uncomment the last line (set by default to use ), and replace it with the parameters of the SOCKS proxy. For example, if you are using the same SOCKS5 proxy as above, you will have to replace the last line by:

socks5 127.0.0.1 8080

Then, proxychains-ng can be launched with

proxychains 

Where <program> can be any program already installed on your system (e.g. xterm, gnome-terminal, etc).

If using tsocks, the configuration takes place in /etc/tsocks.conf. See man 5 tsocks.conf for the options. An example minimum configuration looks like this:

/etc/tsocks.conf
server = 127.0.0.1server_port = 8080server_type = 5

Proxy settings on GNOME3

Some programs like prefer to use the settings stored by gnome. These settings can be modified through the gnome-control-center front end and also through gsettings.

gsettings set org.gnome.system.proxy mode 'manual' gsettings set org.gnome.system.proxy.http host 'proxy.localdomain.com'gsettings set org.gnome.system.proxy.http port 8080gsettings set org.gnome.system.proxy.ftp host 'proxy.localdomain.com'gsettings set org.gnome.system.proxy.ftp port 8080gsettings set org.gnome.system.proxy.https host 'proxy.localdomain.com'gsettings set org.gnome.system.proxy.https port 8080gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '10.0.0.0/8', '192.168.0.0/16', '172.16.0.0/12' , '*.localdomain.com' ]"

This configuration can also be set to automatically execute when connects to specific networks , by using the package AUR from the

Microsoft NTLM proxy

In a Windows network, NT LAN Manager (NTLM) is a suite of Microsoft security protocols which provides authentication, integrity, and confidentiality to users.

AUR from the stands between your applications and the NTLM proxy, adding NTLM authentication on-the-fly. You can specify several "parent" proxies and Cntlm will try one after another until one works. All authenticated connections are cached and reused to achieve high efficiency.

(NTLM PROXY IP:PORT + CREDENTIALS + OTHER INFO) -----> (127.0.0.1:PORT)

Configuration

Change settings in /etc/cntlm.conf as needed, except for the password. Then run:

$ cntlm -H

This will generate encrypted password hashes according to your proxy hostname, username and password.

Warning: can easily sniff your password over LAN when using plain-text passwords instead of encrypted hashes.

Edit /etc/cntlm.conf again and include all three generated hashes, then cntlm.service.

To test settings, run:

$ cntlm -v

Usage

Use 127.0.0.1:<port> or localhost:<port> as a proxy adress. <port> matches the Listen parameter in /etc/cntlm.conf, which by default is 3128.

参考文献:

https://wiki.archlinux.org/index.php/proxy_settings

转载于:https://my.oschina.net/u/1444992/blog/600517

你可能感兴趣的文章
深入理解 CSS3 弹性盒布局模型
查看>>
linux c/c++ GDB教程详解(转载)
查看>>
【linux】ubuntu更改mysql数据文件路径
查看>>
打开APK里的AndroidManifest.xml乱码
查看>>
sql2005 不同的日期展示形式
查看>>
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
查看>>
3. IP地址转换函数
查看>>
快手笔试题
查看>>
javascript 执行环境,作用域链和闭包
查看>>
329.-io流(字符-练习-复制文本文件二)
查看>>
输出对象的字段名和值
查看>>
2019,移动 iOS 开发的寒冬愈演愈烈,我却没有想过放弃!
查看>>
<div>里包含<p>标签疑问
查看>>
Knockout>The "template" binding
查看>>
解决启动Distributed Transaction Coordinator服务出错的问题
查看>>
每日踩坑 2018-06-19 AutoMapper简单性能测试
查看>>
程序员的正确心态:静而非闲
查看>>
C++走向远洋——67(项目二、洗牌)
查看>>
HTTP基础知识(七)
查看>>
as3 加载进来的swf进行缩放
查看>>