本网站可以通过分类标签帮助你快速筛选出你想看的文章,记住地址:www.Facec.cc

linux网关搭建(且实现内网机器出网)

系统初始化

# /sbin/modprobe 8021q
# echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
# echo 2 > /proc/sys/net/ipv4/conf/default/rp_filter
# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
# sysctl -p
# cat >>/etc/iproute2/rt_tables<<EOF
202 dx
261 sc
EOF

配置办公网

`配置内网虚拟网卡`
# vconfig add eno3 36
`添加一个IP`
# ip address add 10.12.36.254/24 dev eno3.36
`启用虚拟IP`
# ip link set dev eno3.36  up

配置公网

  • 电信
`配置虚拟网卡`
# ip link set dev eno4 up
# vconfig  add eno4 50
`添加一个IP,这IP是应该公网IP`
# ip addr add 36.110.40.187/27  dev eno4.50
# ip link set dev eno4.50 up
`添加ipset组以该公网命名`
# ipset create wan_36.110.40.187_ip hash:net family inet hashsize 1024 maxelem 65536
`给组打标签`
# iptables -t mangle -I PREROUTING -m set  --match-set wan_36.110.40.187_ip  src -j MARK --set-xmark  0xbb
`配置SNAT转换`
# iptables -t nat -A POSTROUTING -m mark  --mark 0xbb   -j SNAT --to-source 36.110.40.187
`添加路由表规则`
# ip rule add from all fwmark 0xbb lookup dx
`添加路由`
"配置默认路由"
# ip route add default via 36.110.40.161 table dx
"配置回包路由"
# ip route add 10.12.36.0/24   via 10.12.36.254  table dx
  • 新实创
`配置虚拟网卡`
# ip link set dev eno4 up
# vconfig  add eno4 60
`添加一个IP,这IP是应该公网IP`
# ip addr add 222.249.185.24/27  dev eno4.60
# ip link set dev eno4.60 up
`添加ipset组以该公网命名`
# ipset create wan_222.249.185.24_ip hash:net family inet hashsize 1024 maxelem 65536
`给组打标签`
# iptables -t mangle -I PREROUTING -m set  --match-set wan_222.249.185.24_ip  src -j MARK --set-xmark 0xfa
`配置SNAT转换`
# iptables -t nat -A POSTROUTING -m mark  --mark 0xfa   -j SNAT --to-source 222.249.185.24
`添加路由表规则`
# ip rule add from all fwmark 0xfa lookup sc
`添加路由`
"配置默认路由"
# ip route add default via 222.249.185.30 table sc
"配置回包路由"
# ip route add 10.12.36.0/24  via 10.12.36.254  table sc

测试出网

`在网关机将需要出网的IP加入到ipset组`
# ipset add wan_222.249.185.24_ip 10.12.35.21
`测试办公机出网`
`在网关机切换出网地址`
# ipset add wan_36.110.40.187_ip 10.12.35.21
# ipset del wan_222.249.185.24_ip 10.12.35.21
`测试办公机出网`

alt text

`切换为222出网`
# ipset del wan_222.249.185.24_ip 10.12.35.21
# ipset del wan_36.110.40.187_ip 10.12.35.21
# ipset add wan_222.249.185.24_ip 10.12.35.21


`切换为36出网`
# ipset del wan_222.249.185.24_ip 10.12.35.21
# ipset del wan_36.110.40.187_ip 10.12.35.21
# ipset add wan_36.110.40.187_ip 10.12.35.21

流量走向

当 IP 地址为 10.12.35.21 的流量到达网关时,流量的处理过程如下:

  1. 进入网关
    • 流量进入网关机,首先经过 mangle 表的 PREROUTING 链。
    • 匹配源地址为 10.12.35.21 的数据包,因为该地址在 wan_36.110.40.187_ip 集合中,数据包被标记为 0xbb
  2. 路由决策
    • 根据 ip rule 规则,标记为 0xbb 的数据包使用路由表 dx
    • 在路由表dx中查找路由:
      • 如果目的地址是 10.12.36.0/24 网段,流量通过网关 10.12.36.254
      • 其他流量通过默认网关 36.110.40.161
  3. NAT 处理
    • 流量在 nat 表的 POSTROUTING 链中再次被处理。
    • 匹配标记为 0xbb 的数据包,源地址被转换为 36.110.40.187

总结

  • IP 为 10.12.35.21 的流量到达网关机时,会被标记为 0xbb
  • 使用标记为 0xbb 的数据包会根据路由表 dx 进行路由决策。
  • 如果目的地址是 10.12.36.0/24 网段,流量将通过网关 10.12.36.254
  • 其他流量将通过默认网关 36.110.40.161
  • 最终,流量的源地址会被转换为 36.110.40.187
# linux   ubuntu  

评论