开机启动执行脚本
开机启动脚本有很多种方法我选择在/etc/profile.d/下面建立aa.sh脚本,因为centeros、unbantu通用
注意,此方法开机启动默认的跟路径是/root 建议aa.sh脚本里的文件全部带上全路径
/etc/profile.d/aa.sh
chmod -R 777 aa.sh
通用代码
修改网卡MTU
ifconfig eth0 mtu 1500 (确保统一MTU值 不影响上网等)
设置Vlan标记 (不设置的话 就只能写数字 不能写vx224这个格式) 每个机器都需要设置 每个机器都需要设置 每个机器都需要设置
echo '224 vx224' >> /etc/iproute2/rt_tables
开启路由转发 (三台机器都需要开启路由转发)
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
A 机器
ip link add vxlan224 type vxlan id 224 remote 180.xx.xx.73 dstport xx dev eth0 创建对接B机器的vxlan
ip link set vxlan224 up 启用vxlan网卡
ip addr add 10.11.224.1/24 dev vxlan224 配置vxlan IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 设置IP伪装跟ROS的一样 来实现NAT的上网
注释 224可以批量替换为账户的id 180.xx.xx.73(B机器中转服务器) 4001(B机器端口可以设置为4加账户)上面信息就可以理解为
用户224通过中转服务器180.xx.xx.73的远程端口4001通讯实现转发
B机器
B机器第一步 互联A机器
ip link add vxlan224 type vxlan id 224 remote xx.xx.xx.xx dstport xx dev eth0 创建对接A机器的vxlan
ip link set vxlan224 up 启用vxlan网卡
ip addr add 10.11.224.254/24 dev vxlan224 配置vxlan IP
sudo iptables -t nat -A POSTROUTING -o vxlan224 -j MASQUERADE 设置IP伪装
sudo ip rule add from 10.11.224.254 table vx224 设置路由规则
sudo ip route add default via 10.11.224.1 dev vxlan224 src 10.11.224.254 table vx224 在规则中设置默认路由表
ip rule add from 172.0.1.161 table vx224 设置路由规则
注释:224同A机器可以批量替换 xx.xx.xx.xx 4001 是A机器地址和端口 172.0.1.161 是账户分配的IP
C机器
B机器第二部 互联C机器(设置一次即可 一次即可 一次即可 后续再加A机器无需设置)
ip link add vxlan1 type vxlan id 1 remote xx.xx.x.x dstport xx dev eth0创建对接C机器的vxlan
ip link set vxlan1 up 启用vxlan网卡 配置vxlan IP
ip addr add 11.11.111.1/24 dev vxlan1 设置路由规则 (IP网段和C机器通讯 建议 111可修改 一组机器b.c机器一个网段)
ip route add 172.0.0.0/16 via 11.11.111.2 设置静态路由 设置静态路由 设置静态路由
删除所有vxlan 脚本
TYPES=(vxlan)
iface="$1"
for type in "${TYPES[@]}"; do
ip link show type "${type}" | grep -E '^[0-9]+:' | cut -d ':' -f 2 | sed 's|^[[:space:]]*||' | while read _if; do
echo "${_if}:${type}"
ip link del ${_if}
done | grep "^${iface}"
done
删除所有iptables
iptables -t nat -F
删除未指定的vxlan
TYPES=(vxlan)
iface="$1"
allvxlans=""
for type in "${TYPES[@]}"; do
ip link show type "${type}" | grep -E '^[0-9]+:' | cut -d ':' -f 2 | sed 's|^[[:space:]]*||' | while read _if;
do
echo "${_if}:${type}"
result=$(echo $allvxlans | grep "${_if}")
if [[ "$result" == "" ]];then
ip link del ${_if}
sudo iptables -t nat -D POSTROUTING -o ${_if} -j MASQUERADE
ip rule del table ${_if}
ip rule del table ${_if}
fi
done | grep "^${iface}"
done
网友评论