场景:两台linux服务器,一台可以访问外网,用作代理,一台做私网,使用代理访问外网

配置

服务器 网卡1(ens33) 网卡2(ens37)
CentOS 7.6(agent) 172.16.182.131 192.168.1.1
CentOS 7.6(client) NONE 192.168.1.2

agent:172.16.182.131可以访问外网,192.168.1.1作为client的网关,代理转发访问其他网段的请求

client:192.168.1.2是私网环境,搭建环境时需要用到网络,平时不需要用到网络

agent配置

作为代理的服务器需要开启ip路由转发功能

# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# sysctl -p

关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld

接着该配置agent服务器的iptables规则,但是为了保险起见建议,client配置好再来设置防火墙规则

client配置

client访问外网时,需要由服务器默认访问到agent的192.168.1.1,配置默认路由,也就是添加网关。

方法一

# 临时设置默认路由
# route add default gw 192.168.1.1
# 永久设置
# echo "route add default gw 192.168.1.1"  >> /etc/rc.local
# source /etc/rc.local

方法二

# vim /etc/sysconfig/network-script/ifcfg-ens33
# 末尾添加
GATEWAY=192.168.1.1(1.1为agent端的内网ip)
# systemctl restart network

此时,如果公司中有域名服务器(一般都有),需要添加DNS,与agent一致即可,没有则不写

# echo "nameserver xxxxx" >> /etc/resolv.conf
# xxxxx为公司域名服务器地址或者ip

公司如果没有域名服务器,则使用公网中的域名服务器

# echo "nameserver 8.8.8.8" >> /etc/resolv.conf
# echo "nameserver 8.8.4.4" >> /etc/resolv.conf
# echo "nameserver 114.114.114.114" >> /etc/resolv.conf

再如果公司中必须要VPN或者其他的网络代理去代理agent访问网络,则还需要j加入如下

# vi /root/.bashrc
# 末尾添加
http_proxy="VPN或者网络代理的地址"
https_proxy="VPN或者网络代理的地址"
# source .bashrc

这个时候可以设置agent服务器的iptables规则

在这之前如果使用client去访问外网的话,比如ping,就会卡住,解析不出来,然后过了解析时间报错如下

# ping www.baidu.com
ping: www.baidu.com: unknown name or service

同样,如果没有设置nameserver(DNS)服务器地址,就不会卡住,直接报错

iptables规则设置

agent端

# iptables -t nat -A POSTROUTING -j MASQUERADE
# -t nat:指定对nat规则进行添加
# -A:添加规则,-D为删除
# POSTROUTING:将源地址转换
# -j:满足什么条件时执行什么操作
# MASQUERADE:地址伪装功能(在进行源地址转换时进行地址伪装,也就是NAT)

保存防火墙规则

# service iptables save
# 如果此命令不能用,请执行以下
# yum -y install iptables-services
# 再次执行保存防火墙规则

然后可以使用client去尝试访问外网了

下篇文章教你怎么找到服务器上的网线接口怎么对应服务器中的设备名。

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0