阿里云购买了弹性IP并绑定到弹性网卡后,默认出口IP依然为自带的公网IP。
配置弹性网卡
登陆centos服务器,输入以下命令查看网卡信息:
ifconfig
默认的eth0为本机网卡,eth1或者eht2之类的为弹性网卡。
如果没有看到则需要先执行以下命令进行配置:
vi /etc/sysconfig/network-scripts/ifcfg-eth1
内容如下:
DEVICE=eth1 # 表示新配置的网卡接口。
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=no
IPV6INIT=no
PERSISTENT_DHCLIENT=yes
HWADDR=00:16:3e:12:e7:** # 必须使用您查到的网卡对应的MAC地址。可以在阿里云控制台“弹性网卡”列表页中查看
DEFROUTE=no # 表示该网卡接口是不是默认路由。这里只需要改成yes,则出口ip就变为了弹性网卡的ip
修改默认路由参数:
sed -i 's/DEFROUTE\=no/DEFROUTE\=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth1
重启网络服务:
service network restart
测试出口IP
curl https://myip.ipip.net
结果显示弹性网卡IP则说明配置成功
通过webify将shell命令转化为web服务
webify下载地址:https://github.com/beefsack/webify/releases
新建/home/switchip.sh
,内容如下:
#!/bin/bash
if [ $1 == "eip" ];then
sudo sed -i 's/DEFROUTE\=no/DEFROUTE\=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth1
sudo systemctl restart network.service 2>&1
echo "{\"code\":2}"
elif [ $1 == "ip" ];then
sudo sed -i 's/DEFROUTE\=yes/DEFROUTE\=no/g' /etc/sysconfig/network-scripts/ifcfg-eth1
sudo systemctl restart network.service 2>&1
echo "{\"code\":3}"
else
echo "{\"code\":1,\"errorMsg\":\"No instruction received\"}"
fi
由于需要使用sudo,需要设置nobody用户免密码
vi /etc/sudoers
nobody ALL = NOPASSWD: ALL
新建/usr/lib/systemd/system/webify.service
,内容如下:
[Unit]
Description=Webify Switchip Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/webify -addr=:4000 xargs /home/switchip.sh
[Install]
WantedBy=multi-user.target
#添加开机启动
systemctl enable webify # 开机禁止启动服务 systemctl disable webify.service
#启动服务
systemctl start webify
测试:
curl -d 'eip' http://xxxx:4000