如何通过iptables代理访问内网
场景
A机器能够联通内网机器,B机器能够联通A机器,但是访问不到内网机器,场景是希望通过A机器能够转发直接联通局域网内的其它机器
机器IP
内网为172.0.0.x/24
A机器为172.0.0.10/24
A机器为192.168.1.10/24
B机器IP为192.168.1.20/24
进行设置
在A机器上进行设置
[root@jenkins ~]# cat ip.sh
#!/bin/sh
#
IPT="/sbin/iptables"
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
$IPT -F
$IPT -t nat -F
$IPT -X
$IPT -t nat -X
$IPT -Z
$IPT -t nat -Z
$IPT -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j SNAT --to 172.0.0.10
$IPT -A FORWARD -s 192.168.1.20 -j ACCEPT
意思是来自192.168.1.0网段的数据通过172.0.0.10这个进行转发,这个172.0.0.10是转发机器本机的ip
在客户端192.168.1.20机器执行
route add -p 172.0.0.0 mask 255.255.255.0 192.168.1.10
-p 参数:p 即 persistent 的意思
-p 表示将路由表项永久加入系统注册表
如果要删除
route delete 172.0.0.0
通过添加静态路由,把发往172.0.0.0网段的数据通过192.168.1.10这个网关进行转发
然后这个192.168.1.20的机器就能跟内网的172.0.0.x的机器进行通信了
备注
#songtao to 254
$IPT -t nat -A POSTROUTING -s 66.66.66.64/255.255.255.255 -j SNAT --to 192.168.188.247
$IPT -A FORWARD -s 66.66.66.64 -d 192.168.188.12 -j ACCEPT
如果是内网的,并且只代理一个ip的,可以这样处理
66.66.66.64为客户端机器
192.168.188.12为目标机器
192.168.188.247为代理机器本地的ip,能够连通目标机器的那个ip
第二行为指定可以访问的ip
更新历史
why | when |
---|---|
创建 | 2019年09月04日 |
更新 | 2019年12月9日 |