179 端口与连接模型
BGP 是唯一使用 TCP 作为传输的路由协议,目的端口固定为 IANA 注册的 179,源端口为随机临时端口。一个邻居就是一条 TCP 连接,两端都可以主动发起,因此配置 remote-as 后双方会各自尝试 connect,若同时发起则按 RFC 4271 的冲突处理规则比较 Router ID 决定保留哪条。
基本信息
| 目的端口 | TCP 179(IANA 注册,源端口随机) |
|---|---|
| 发起方式 | 两端均可主动,也可一端被动监听 |
| 中间设备 | 防火墙与 ACL 需双向放行,NAT 需稳定映射 |
| 安全加固 | TCP MD5 签名、GTSM(TTL 校验)、来源地址白名单 |
| 规模影响 | 大量邻居时关注防火墙会话表容量与老化时间 |
典型使用场景
- 打通新对等:先验 179 可达,再核对 remote-as,避免在 BGP 层面空转
- 跨防火墙建立 eBGP:确认策略允许双向 179,而不是只放行去程
- NAT 环境下的对等:使用固定一对一映射,防止地址端口变化导致会话重建
- 公网直连对等加固:结合 TCP MD5 签名与 GTSM 降低伪造报文风险
- 大规模对等设备扩容:评估防火墙或中间设备的并发会话上限与超时时间
连通性与连接状态验证
连通性与连接状态验证
# 从对端测试 179 是否可达(Windows)
Test-NetConnection 10.0.0.2 -Port 179
#
# Linux 侧查看连接与监听
ss -tnp | grep 179
#
# 网络设备侧查看 TCP 连接表
display tcp verbose | include 179
# 关注:State 是否为 ESTABLISHED、两端地址与端口是否成对出现端口层排错对照
| 现象 | 端口层原因 | 处理方向 |
|---|---|---|
| 状态在 Connect/Active 循环 | SYN 到达但 SYN-ACK 被拦或回程无路由 | 核对双向 ACL 与回程路由 |
| 会话建立后立刻断开 | 中间设备老化时间短于 Keepalive 间隔 | 延长会话老化时间或缩短 Keepalive |
| NAT 后会话反复重建 | 映射不固定或端口转换后不一致 | 改用静态一对一映射或隧道直连 |
| 新邻居连不上、老邻居正常 | 防火墙会话表或 NAT 池已满 | 扩容会话表、清理无效条目 |
抓包定位
抓包定位
# 只看 BGP 相关 TCP 报文,确认握手与 179 方向
tcpdump -i eth0 -nn 'tcp port 179' -c 50
# 观察点:SYN -> SYN/ACK -> ACK 是否完成
# 之后是否出现 BGP Open(长度 19 起的报文)
# 若只有 SYN 重传:多为策略拦截或对端无回程路由使用被动模式(passive)可让本端只监听不主动发起,常用于对端固定主动连接的场景。两端若都配置被动,谁都等对方先连,会话会永远停在 Idle 或 Active。