前言
地址需要转换的情况下,访问一个本机的ip能够自动跳转访问另外一个地址,也就是seafile的访问地址下载链接的时候自动识别为内网的地址,我们需要让访问这个内网地址的时候跳转到外网的地址
自己主机增加一个IP
自己用哪个网卡上网就用哪个网卡增加一个静态ip
20.20.20.247
子网掩码255.255.255.255
对于直接设置无法生效IP的情况
netsh interface ip add address name="以太网" 20.20.20.247 255.255.255.255
增加一个本机的代理转发
netsh interface portproxy add v4tov4 listenport=8082 listenaddress=* connectport=8082 connectaddress=vclusters.imwork.net
查询下设置情况
netsh interface portproxy dump
查询端口监听
NETSTAT.EXE -antp tcp|findstr LISTENING|findstr 8082
如果需要删除
netsh interface portproxy delete v4tov4 listenport=8082 listenaddress=*
然后正常访问即可
http://vclusters.imwork.net:8888/
这个方案存在一个问题,一个内网里面只能由一个设置这个IP的,否则有问题,第二个ip拉不起来
通过内网一台机器跳转
[root@lab101 ~]# cat iptable.sh
#!/bin/sh
myip=113.110.224.246
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
iptables -t nat -A PREROUTING -p tcp --dport 8082 -i enp6s0f1 -d 20.20.20.247 -j DNAT --to-destination $myip:8082
iptables -t nat -A POSTROUTING -j MASQUERADE
[root@lab101 ~]# cat update.sh
#! /bin/sh
ip=`nslookup vclusters.imwork.net|grep -v 223.5.5.5|grep Address|awk '{print $2}'`
echo $ip
if [ -z "$ip" ]; then
echo "no ip"
exit 0
fi
sed -i "/^myip=*/c myip=$ip" /root/iptable.sh
sh /root/iptable.sh
[root@lab101 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/5 * * * * root /bin/bash /root/update.sh > /dev/null 2>&1
注意上面的是虚拟ip的需要加上-i参数来指定虚拟ip的物理网卡,否则是不行的,下面的MASQUERADE是自己处理的,按这个配置就可以了
还需要动态的去更新脚本