# 机器A 允许转发 echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf sysctl -p # 机器A 建立GRE隧道 ip tunnel add tunnel1 mode gre local AIP remote BIP ttl 255 ip addr add 10.0.0.1/30 dev tunnel1 ip link set tunnel1 up # 机器B 建立GRE隧道 ip tunnel add tunnel1 mode gre local BIP remote AIP ttl 255 ip addr add 10.0.0.2/30 dev tunnel1 ip link set tunnel1 up #两边都要执行 防火墙允许gre数据包 此时才可以ping firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT firewall-cmd --reload # 机器B 指定路由 echo '100 grert' >> /etc/iproute2/rt_tables ip rule add from 10.0.0.0/30 table grert ip route add default via 10.0.0.1 table grert #机器A执行 防火墙允许伪装 或者 iptables -F 或者直接禁用防火墙firewalld firewall-cmd --permanent --add-masquerade firewall-cmd --reload # 机器A 执行代理和转发 iptables -t nat -A POSTROUTING -s 10.0.0.0/30 ! -o gre+ -j SNAT --to-source AIP # 此时 机器B curl http://www.cpanel.net/showip.cgi --interface 10.0.0.2 可以看到机器A IP iptables -A FORWARD -d 10.0.0.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s 10.0.0.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A PREROUTING -d AIP -j DNAT --to-destination 10.0.0.2
下面是一些辅助工具
1. lsmod | grep gre可以查看ipip模块是否加载, modprobe ip_gre 立即加载模块
2.转发机器上需要有iptables(centos7已内置不需要含iptables.services是两个) 和 iproute2(centos7已内置)
3.iptables.services和firewalld的各种命令
systemctl start iptables #启动 systemctl status iptables #查看运行状态 systemctl restart iptables.service #重启 systemctl stop iptables.service #停止 systemctl enable iptables.service #设置开机启动 systemctl disable iptables.service #禁止开机启动
systemctl status firewalld systemctl start firewalld systemctl enable firewalld systemctl stop firewalld systemctl disable
4.yum install -y tcpdump 可以用来查看tcp包去向
tcpdump -i eth0 host 192.168.1.1
以上命令大部分会重启后失效,要写入开机启动
最新评论