GRE隧道打通及IP地址映射 Centos7

# 机器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

以上命令大部分会重启后失效,要写入开机启动

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址